冒泡排序(两两交换)
int [] number ={1,3,8,4,2,4,2,3};
1 1 3 4 2 4 2 3 8;
2 1 3 2 4 2 3 4 8
3 1 2 3 2 3 4 4 8
4 1 2 2 3 3 4 4 8
5 1 2 2 3 3 4 4 8
6 1 2 2 3 3 4 4 8
7 1 2 2 3 3 4 4 8
8 1 2 2 3 3 4 4 8
/** * 冒泡排序 * (注释:循环先看里面.控制两两交换位置; 里面的循环执行一次数组结果就是 上面的第一遍 .所有要想得到我们想要的,就得多次循环; 所有第一个循环的作用就是;控制第二个循环的次数..)
int leng = number.length;//数组长度
int temp = 0;//交换变量
for (int i = 0; i < leng - 1; i++) {
for (int j = 0; j < leng - 1 - i; j++) //leng-1: 当交换到最后一位时.j+1 所有在这里-1 是为了控制数组不会越界 -i:是为了减少重复的循环,因为每次循环一次.最大的都会跑到最后,最后一次不用再比较.所以-1;
{ if (numbers[j] > numbers[j + 1]) { //判断相邻两个数的大小 .第一个比第二个大.交换位置
temp = numbers[j];
numbers[j] = numbers[j + 1];
numbers[j + 1] = temp;
}
}
}
}
选择排序:
第一次选择最小的.放在下标为0的位置;
第二次选择次小的.放在下标为1的位置
以此类推;
int [] a ={1,3,8,4,2,4,2,3};
1 1 3 8 4 2 4 2 3
2 1 2 8 4 2 4 3 3
3 1 2 2 4 8 4 3 3
4 1 2 2 3 8 4 4 3
5 1 2 2 3 3 4 4 8
6 1 2 2 3 3 4 4 8
7 1 2 2 3 3 4 4 8
8 1 2 2 3 3 4 4 8
for(int i=0;i
int small =a[i]; 声明一个最小的数
int index=-1; 记录更小数的下标
for(int j=i+1;j
if(small>a[j]){ 判断是否有比最小数还小的数
small=a[j]; 设置更小的数
index=j; 记录最小数的下标
}
}
if(index !=-1){ 判断是否有这个数
//交换位置
a[index]=a[i];
a[i]=small;
}
}
网友评论