一、解决方案
给定数组: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;}}}
