public static void bubbleSort(int[] array){
//冒泡排序
//注意i和j的初始值
for (int i = 1; i < array.length; i++) {//本质上时传递的i的值会影响数字交换的个数
boolean flg = false;//判断是否需要继续排序
for (int j = 0; j < array.length-i; j++) {//本质上是说这个循环,每次给下一个if判断条件几个j的值,所以要代入一个变量,让传递次数根据i的值改变(第一趟传递长度-1次,第二趟传递长度-2次)
//所以要把i带入进去,减少后期的运算
if (array[j]>array[j+1]){//j传递了几个值,就代表传递了几次
//只要进入if语句块,就代表仍需要排序
int tmp = array[j];
array[j] = array[j+1];
array[j+1] = tmp;
flg = true;
}
}//j从头到尾排序后没有要交换的值
if (!flg){
return;//直接结束方法
}
}
}
关键点在于如何理解跑了几趟,而躺数决定着传递数
然后就是临界点的判断