经典排序算法 - 鸡尾酒排序Cocktail sort
生活随笔
收集整理的這篇文章主要介紹了
经典排序算法 - 鸡尾酒排序Cocktail sort
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
經典排序算法 - 雞尾酒排序Cocktail sort
雞尾酒排序基于冒泡排序,雙向循環
還是看例子吧,給定待排數組[2 3 4 5 1]
第一趟過去時的每一步
第一步迭代,2 < 3不換
[2 3 4 5 1]
?
第二步迭代,3 < 4不換
[2 3 4 5 1]
?
第三步迭代,4 < 5不換
[2 3 4 5 1]
?
第四步迭代,5 > 1交換
[2 3 4 1 5]
?
第一趟回來時的第一步,雞尾酒一次到頭后就回返回來,再到頭后再過去,來回比,一個來回能排兩個數字
第五步迭代,1 < 5不交換
[2 3 4 1 5]
?
第六步迭代,1 < 4交換
[2 3 1 4 5]
?
第七步迭代,1 < 3交換
[2 1 3 4 5]
?
第八步迭代,2 > 1交換
[1 2 3 4 5]
?
排序完畢,順序輸出結果即可得[ 1 2 3 4 5]
?
如何判斷排序結束了?
假如一趟來回沒有交換任何數字,則表示該數組已經有序了,可以設置了個變量表示有沒有交換過
代碼僅供參考
static void cocktail_sort(int[] unsorted){bool swapped = false;do{for (int i = 0; i < unsorted.Length - 1; i++){if (unsorted[i] > unsorted[i + 1]){int temp = unsorted[i];unsorted[i] = unsorted[i + 1];unsorted[i + 1] = temp;swapped = true;}}swapped = false;for (int j = unsorted.Length; j > 1; j--){if (unsorted[j] < unsorted[j - 1]){int temp = unsorted[j];unsorted[j] = unsorted[j - 1];unsorted[j - 1] = temp;swapped = true;}}} while (swapped);}static void Main(string[] args){int[] x = { 6, 2, 4, 1, 5, 9 };selection_sort(x);foreach (var item in x){Console.WriteLine(item);}Console.ReadLine();}?
返回主目錄 [經典排序算法][集錦]
轉載于:https://www.cnblogs.com/kkun/archive/2011/11/23/cocktail_sort.html
總結
以上是生活随笔為你收集整理的经典排序算法 - 鸡尾酒排序Cocktail sort的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到闺女结婚是什么预兆
- 下一篇: IOS自动化打包介绍