一 冒泡排序
原理是臨近的數字兩兩進行比較,按照從小到大或者從大到小的順序進行交換,
這樣一趟過去后,最大或最小的數字被交換到了最后一位,
然后再從頭開始進行兩兩比較交換,直到倒數第二位時結束,其余類似看例子
例子為從小到大排序,
原始待排序數組| 6 | 2 | 4 | 1 | 5 | 9 |
第一趟排序(外循環)
第一次兩兩比較6 > 2交換(內循環)
交換前狀態| 6 | 2 | 4 | 1 | 5 | 9 |
交換后狀態| 2 | 6 | 4 | 1 | 5 | 9 |
?
第二次兩兩比較,6 > 4交換
交換前狀態| 2 | 6 | 4 | 1 | 5 | 9 |
交換后狀態| 2 | 4 | 6 | 1 | 5 | 9 |
?
第三次兩兩比較,6 > 1交換
交換前狀態| 2 | 4 | 6 | 1 | 5 | 9 |
交換后狀態| 2 | 4 | 1 | 6 | 5 | 9 |
?
第四次兩兩比較,6 > 5交換
交換前狀態| 2 | 4 | 1 | 6 | 5 | 9 |
交換后狀態| 2 | 4 | 1 | 5 | 6 | 9 |
?
第五次兩兩比較,6 < 9不交換
交換前狀態| 2 | 4 | 1 | 5 | 6 | 9 |
交換后狀態| 2 | 4 | 1 | 5 | 6 | 9 |
?
第二趟排序(外循環)
第一次兩兩比較2 < 4不交換
交換前狀態| 2 | 4 | 1 | 5 | 6 | 9 |
交換后狀態| 2 | 4 | 1 | 5 | 6 | 9 |
?
第二次兩兩比較,4 > 1交換
交換前狀態| 2 | 4 | 1 | 5 | 6 | 9 |?
交換后狀態| 2 | 1 | 4 | 5 | 6 | 9 |
?
第三次兩兩比較,4 < 5不交換
交換前狀態| 2 | 1 | 4 | 5 | 6 | 9 |?
交換后狀態| 2 | 1 | 4 | 5 | 6 | 9 |
?
第四次兩兩比較,5 < 6不交換
交換前狀態| 2 | 1 | 4 | 5 | 6 | 9 |
交換后狀態| 2 | 1 | 4 | 5 | 6 | 9 |
?
第三趟排序(外循環)
第一次兩兩比較2 > 1交換
交換后狀態| 2 | 1 | 4 | 5 | 6 | 9 |
交換后狀態| 1 | 2 | 4 | 5 | 6 | 9 |
?
第二次兩兩比較,2 < 4不交換
交換后狀態| 1 | 2 | 4 | 5 | 6 | 9 |?
交換后狀態| 1 | 2 | 4 | 5 | 6 | 9 |
?
第三次兩兩比較,4 < 5不交換
交換后狀態| 1 | 2 | 4 | 5 | 6 | 9 |?
交換后狀態| 1 | 2 | 4 | 5 | 6 | 9 |
?
第四趟排序(外循環)無交換
第五趟排序(外循環)無交換
這樣一趟過去后,最大或最小的數字被交換到了最后一位,
然后再從頭開始進行兩兩比較交換,直到倒數第二位時結束,其余類似看例子
例子為從小到大排序,
原始待排序數組| 6 | 2 | 4 | 1 | 5 | 9 |
第一趟排序(外循環)
第一次兩兩比較6 > 2交換(內循環)
交換前狀態| 6 | 2 | 4 | 1 | 5 | 9 |
交換后狀態| 2 | 6 | 4 | 1 | 5 | 9 |
?
第二次兩兩比較,6 > 4交換
交換前狀態| 2 | 6 | 4 | 1 | 5 | 9 |
交換后狀態| 2 | 4 | 6 | 1 | 5 | 9 |
?
第三次兩兩比較,6 > 1交換
交換前狀態| 2 | 4 | 6 | 1 | 5 | 9 |
交換后狀態| 2 | 4 | 1 | 6 | 5 | 9 |
?
第四次兩兩比較,6 > 5交換
交換前狀態| 2 | 4 | 1 | 6 | 5 | 9 |
交換后狀態| 2 | 4 | 1 | 5 | 6 | 9 |
?
第五次兩兩比較,6 < 9不交換
交換前狀態| 2 | 4 | 1 | 5 | 6 | 9 |
交換后狀態| 2 | 4 | 1 | 5 | 6 | 9 |
?
第二趟排序(外循環)
第一次兩兩比較2 < 4不交換
交換前狀態| 2 | 4 | 1 | 5 | 6 | 9 |
交換后狀態| 2 | 4 | 1 | 5 | 6 | 9 |
?
第二次兩兩比較,4 > 1交換
交換前狀態| 2 | 4 | 1 | 5 | 6 | 9 |?
交換后狀態| 2 | 1 | 4 | 5 | 6 | 9 |
?
第三次兩兩比較,4 < 5不交換
交換前狀態| 2 | 1 | 4 | 5 | 6 | 9 |?
交換后狀態| 2 | 1 | 4 | 5 | 6 | 9 |
?
第四次兩兩比較,5 < 6不交換
交換前狀態| 2 | 1 | 4 | 5 | 6 | 9 |
交換后狀態| 2 | 1 | 4 | 5 | 6 | 9 |
?
第三趟排序(外循環)
第一次兩兩比較2 > 1交換
交換后狀態| 2 | 1 | 4 | 5 | 6 | 9 |
交換后狀態| 1 | 2 | 4 | 5 | 6 | 9 |
?
第二次兩兩比較,2 < 4不交換
交換后狀態| 1 | 2 | 4 | 5 | 6 | 9 |?
交換后狀態| 1 | 2 | 4 | 5 | 6 | 9 |
?
第三次兩兩比較,4 < 5不交換
交換后狀態| 1 | 2 | 4 | 5 | 6 | 9 |?
交換后狀態| 1 | 2 | 4 | 5 | 6 | 9 |
?
第四趟排序(外循環)無交換
第五趟排序(外循環)無交換
排序完畢,輸出最終結果1 2 4 5 6 9
java代碼
/*** 冒泡排序* */ public class BubbleSort {/*** 排序算法* */public static void sort(int array[]){if( array == null || array.length == 0 ){return ;}int temp;for(int i = 0 ; i < array.length ; i++ ){for(int j = array.length -1 ; j > i ; j-- ){if( array[j-1] > array[j] ){temp = array[j-1];array[j-1] = array[j];array[j] = temp;}}}}/*** 輸出數組* */public static void show(int array[]){if( array == null || array.length == 0 ){return ;}for(int i = 0 ; i < array.length ; i++){System.out.print( array[i] +" ");}}/*** main函數進行測試* */public static void main(String[] args) {int array[] = {1,23,42,533,52,32,11,1,32,3242,234,223,795,96};BubbleSort.sort(array);BubbleSort.show(array);}}總結
- 上一篇: javaMail邮件发送
- 下一篇: 二 选择排序