對要排序的數據,從上到下一次比較相鄰的書並加以調整,將最大的數向下移動,較小的數向上冒起。即:每一趟一次比較相鄰的兩個元素,將較小的數放在左邊,循環進行一樣的操做,直到所有帶排序的數據元素排完。 java
package test.algorithm.FastSlowPointer; public class BubbleSort { /** * 冒泡排序 * @param list */ public static void bubbleSort(int[] list){ int temp = 0, count1=0, count2=0 ; //子序列是否無序(優化冒泡排序) boolean flag =true; //每一輪經過兩兩比較並判斷是否移動, //一輪比較下來,便可得到最小元素 for(int i=0;i<list.length && flag;i++){ for(int j=list.length-1;j>i;j--){ count1++; if(list[j-1]>list[j]){ //移動元素即i以後子序列無序 count2++; temp = list[j-1]; list[j-1] = list[j]; list[j] = temp; flag = true; }else{ //不用移動元素即i以後子序列有序 //i以後的元素不用比較 flag = false; } } } System.out.println("比較"+count1+"次,移動"+count2+"次"); } public static void main(String[] args) { int[] list = {5,2,6,0,3,9,1,7,4,8}; bubbleSort(list); System.out.print("打印數組:"); for(int i :list){ System.out.print(i+" "); } } }