一、解决方案
给定数组:A = [9,7,5,6,2,3,1,4,8],对数组进行冒泡排序
核心:A[i]和A[i+1],如果A[i]>A[i+1],就交换。
无优化方案:
每一循环交换a.length-1次,总共排序a.length-1轮
终极优化方案:
记录每一循环最后一次交换的元素的索引,作为下一轮的次数。
二、代码
public static void bubble(int[] a){
//记录下一次冒泡的次数
int n = a.length - 1;
for(int j = 0 ;j<a.length -1 ;j++){
int last = 0;
for(int i = 0;i<n;i++){
if(a[i]>a[i+1]){
swap(a,i,i+1);
last = i;
}
System.out.println(Arrays.toString(a));
}
System.out.println("------");
n = last;
if(n == 0){
break;
}
}
}