排序演算法之雞尾酒排序

2021-09-23 17:53:58 字數 818 閱讀 7303

雞尾酒排序實際上是一種雙向的氣泡排序。第一趟,從0開始到size-1前往後做「冒泡」,將最大值移動到最後(下標為size-1)。第二趟,從size-2開始到0從後往前做「冒泡」,將最小值移動到最前面(下標為0)。第三趟,從1開始到size-2從前往後做「冒泡」,將最大值移動到最後(下標為size-2)。第四趟,從size-3開始到1從後往前做「冒泡」,將最小值移動到最前面(下標為1)。按照這樣的順序依次執行,到排序過程中沒有進行交換操作為止。

例如對序列{8, 3, 6, 1, 9, 5, 4}做雞尾酒排序。第一趟從前往後,結果為{3, 6, 1, 8, 5, 4, 9}。第二趟從後往前,結果為{1, 3, 6, 4, 8, 5, 9}。第四趟從前往後,結果為{1, 3, 4, 6, 5, 8, 9}。第五趟從後往前,結果為{1, 3, 4, 5, 6, 8, 9}。第六趟從前往後,由於沒有進行交換操作,所以排序完畢。最終結果為{1, 3, 4, 5, 6, 8, 9}

#define true  1

#define false 0

typedef int datatype;

typedef int bool;

bool cocktailsort(datatype *array, int size)

//開始排序

for(i = 0; i <= size / 2; i++)

}if(tag)

//從後往前,選出最小值放在這一趟的最前面

for(j = j-1; j > i; j--)

}if(tag)

}return

true;

}

排序演算法 雞尾酒排序

雞尾酒排序是一種在氣泡排序的基礎上進行改進的演算法。和氣泡排序的從陣列的一端乙個個排序到另一端的單方向的順序不同,雞尾酒排序的元素比較和交換的雙向的。雙向是什麼意思呢?就是說,對於雞尾酒排序,第一輪從左到右進行排序,這裡和氣泡排序一模一樣,但是第二輪就不一樣了,此時需要的是從右到左,換個方向進行排序...

雞尾酒演算法排序

一 什麼時雞尾酒排序?雞尾酒排序又稱為快樂小時排序,它基於氣泡排序進行的優化方案。二 雞尾酒演算法思想 氣泡排序是元素單向比較,而雞尾酒排序卻是雙向。列舉乙個最簡單的栗子array 2,3,4,5,6,7,8,9,1 如果按照傳統的氣泡排序進行操作,第一輪結果 2,3,4,5,6,7,8,1,9 只...

雞尾酒排序

氣泡排序是從陣列的一側到另一側為一輪,根據條件兩兩交換,例如關於氣泡排序中的一組資料3 2 5 4 6 1 8 9 7,優化的氣泡排序在經過六輪之後得到排好的陣列,而雞尾酒排序是一輪次比較兩回 先從左到右比較,如果左邊比右面大,交換位置 然後從右到左比較,左邊比右邊大,交換位置。就用冒泡中的那組數從...