经典排序算法 - 鸡尾酒排序Cocktail sort
經(jīng)典排序算法 - 雞尾酒排序Cocktail sort
雞尾酒排序基于冒泡排序,雙向循環(huán)
還是看例子吧,給定待排數(shù)組[2 3 4 5 1]
第一趟過去時(shí)的每一步
第一步迭代,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]
?
第一趟回來時(shí)的第一步,雞尾酒一次到頭后就回返回來,再到頭后再過去,來回比,一個(gè)來回能排兩個(gè)數(shù)字
第五步迭代,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]
?
排序完畢,順序輸出結(jié)果即可得[ 1 2 3 4 5]
?
如何判斷排序結(jié)束了?
假如一趟來回沒有交換任何數(shù)字,則表示該數(shù)組已經(jīng)有序了,可以設(shè)置了個(gè)變量表示有沒有交換過
代碼僅供參考
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();}?
返回主目錄 [經(jīng)典排序算法][集錦]
轉(zhuǎn)載于:https://www.cnblogs.com/kkun/archive/2011/11/23/cocktail_sort.html
總結(jié)
以上是生活随笔為你收集整理的经典排序算法 - 鸡尾酒排序Cocktail sort的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到闺女结婚是什么预兆
- 下一篇: IOS自动化打包介绍