冒泡排序及其優化
一.原理及優化原理
1.原理講解
冒泡排序即:第一個數與第二個數進行比較,如果滿足條件位置不變,再把第二個數與第三個數進行比較.不滿足條件則替換位置,再把第二個數與第三個數進行比較,以此類推,執行完為一個趟,趟數等於比較的個數減一.
2.冒泡排序原理圖示:(以98765序列為例,排序結果從小到大)
3.冒泡排序優化
優化版:每一次減少一次循環(即紅色部分不需要在進行比較)
4.冒泡排序最終版
最終版:每一趟減少一次循環(刪除線不需要再執行)
二.實現代碼
1.冒泡排序實現主要代碼

public static void main(String[] args) { int []arr={9,8,7,6,5}; int len=arr.length; for (int i=0;i<len-1;i++) { for (int j=0;j<len-1;j++) { if(arr[j]>arr[j+1]){ int temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } System.out.println(Arrays.toString(arr)); }
2.冒泡排序優化代碼

public static void main(String[] args) { int []arr={9,8,7,6,5,10}; int len=arr.length; for (int i=0;i<len-1;i++) { for (int j=0;j<len-1-i;j++) { if(arr[j]>arr[j+1]){ int temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } System.out.println(Arrays.toString(arr)); }
3.冒泡排序最終代碼

public static void main(String[] args) { int []arr={9,8,7,6,5}; int len=arr.length; for (int i=0;i<len-1;i++) { System.out.println("第"+(i+1)+"趟"); //增加判斷位 boolean flag=true; for (int j=0;j<len-1-i;j++) { System.out.println("第"+(j+1)+"次"); if(arr[j]>arr[j+1]){ int temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; flag=false; } System.out.println(Arrays.toString(arr)); } //如果上面沒有執行直接退出 if(flag){ break; } } System.out.println(Arrays.toString(arr)); }