冒泡排序
冒泡排序
定义:
一组数据中俩俩进行比较,一轮后找出这组中最大的数,放在最后的位置,再去找第二大的数,也可以少比较一次。八大排序算法之一。
两层循环:外层控制次数,遍历完这个数组,从0开始到length-1次;内层比较,要找出length-1个最大值,第一个要比较length-1次,第二个要length-2次。。。。。第length-1个要比较1次,即length-1-外层i=1就排序完成,此时外层循环了i+1次(从0开始),内层循环的条件为初始为0,控制 <length-1-外层i,迭代加就行
因为从0开始,外层循环次数=最大值个数,比较一组数只要找出length-1个最大值,所以比较完外层循环次数为length-1,(从0开始,要加1,表面要减1)外层标记数i=length-1-1(即i<length-1);
public static void main(String[] args) {
int[] b = {4, 1, 7, 5, 9,2 , 0};
sort(b);
for (int i : b) {
System.out.print(i+"\t");
}
}
static int[] sort(int[] a) {
int temp = 0;
//外层循环确定循环次数
for (int i = 0; i < a.length - 1 ; i++) {
//内层循环俩俩比较
// (0和1,1和2.。。。。可以知道0和1但不知道0和2,需要再次比较,
// 第一次找出最大值放末尾,第二次找到第二大的放末尾。。。。。
// (循环次数由外层循环控制))最后一次不用比较i=5时,就是数组[0]和数组[1]的比较;
for(int j=0;j<a.length-1-i;j++){
if (a[j] > a[j + 1]) {
temp =a[j+1];
a[j + 1] = a[j];
a[j] = temp;
}
}
}
return a;
}

浙公网安备 33010602011771号