排序演算法系列之雞尾酒排序

2021-08-21 11:52:13 字數 864 閱讀 2160

1 核心思想:雞尾酒排序是氣泡排序的一種改進和變型 ,又稱「雙向氣泡排序」,雞尾酒排序是從低到高然後從高到低來回排序(選出最大和最小項),比氣泡排序的效率稍微好一點,原因是氣泡排序只從乙個方向進行比對(由低到高),每次迴圈只移動乙個專案。2 演算法分析

1. 先對陣列從左到右進行氣泡排序(公升序),則最大的元素去到最右端

2. 再對陣列從右到左進行氣泡排序(降序),則最小的元素去到最左端

3. 迴圈1、2步操作,依次改變冒泡的方向,並不斷縮小未排序元素的範圍,直到最後乙個元素結束

如上圖所示,以一組資料 為例,進行雞尾酒排序的演算法演示:

// 雞尾酒排序(c++)

void swap(int& a, int& b)

void cocktailsort(vector

&vi)

}//降序排列

for(int j=vi.size()-i-1;j>i;j--)

}//中間排序結果輸出,方便檢視排序過程

for (auto x : vi)

cout

<< x << " ";

cout

<< endl;

if(issorted==false)}}

雞尾酒排序是氣泡排序的一種改進,倒並未有本質的改變,與氣泡排序的時間複雜度和空間複雜度相近,整體的效能都比較差。

排序演算法之雞尾酒排序

雞尾酒排序實際上是一種雙向的氣泡排序。第一趟,從0開始到size 1前往後做 冒泡 將最大值移動到最後 下標為size 1 第二趟,從size 2開始到0從後往前做 冒泡 將最小值移動到最前面 下標為0 第三趟,從1開始到size 2從前往後做 冒泡 將最大值移動到最後 下標為size 2 第四趟,...

排序演算法 雞尾酒排序

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

雞尾酒演算法排序

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