原理是臨近的數字兩兩進行比較,按照從小到大或者從大到小的順序進行交換,
這樣一趟過去後,最大或最小的數字被交換到了最後一位,
然後再從頭開始進行兩兩比較交換,直到倒數第二位時結束,其餘類似看例子
例子為從小到大排序,
原始待排序數組| 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 |交換前狀態| 2 |後態| 2 | 4 | 1 | 5 | 6 | 9 |
第五次兩兩比較,6
交換前狀態| 2 | 4 | 1 | 5 | 6 |
交換後狀態| 2 | 4 | 1 | 5 | 6 | 9 | 第二次排序(外循環)第一次兩兩比較2 交換前狀態| 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
第三次兩兩比較,4
交換前狀態| 2 | 1 | 4 | 5 | 6 | 9 |
交換後狀態| 2 | 1 | 4 | 5 | 6 | 9 |
第四次兩兩比交換| 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
交換後狀態| 1 | 2 | 4 | 5 | 6 | 9 |
交換後狀態| 1 | 2 | 4 | 5 | 6 | 9 | | 2 | 4 | 5 | 6 | 9 |
交換後狀態| 1 | 2 | 4 | 5 | 6 | 9 |
排序(外循環)無交換
排序完畢,輸出最終結果1 2 4 5 6 9
代碼僅供參考
static void bubble_sort(int[] unsorted) { for (int i = 0; i < unsorted.Length; i++) { for (int j = i; j < unsorted.Length; j++) { if (unsorted[i] > unsorted[j]) { int temp = unsorted[i]; unsorted[i] = unsorted[j]; unsorted[j] = temp; } } } } static void Main(string[] args) { int[] x = { 6, 2, 4, 1, 5, 9 }; bubble_sort(x); foreach (var item in x) { Console.WriteLine(item); } Console.ReadLine(); }
。