C 雞尾酒排序(冒泡改進)

2021-06-08 06:33:24 字數 876 閱讀 5438

也稱雙向氣泡排序(氣泡排序的一種變形),攪拌排序 (也可以視作選擇排序的一種變形), 漣漪排序。此演演算法與氣泡排序的不同處在於排序時是以雙向在序列中進行排序。

與氣泡排序不同的地方

雞尾酒排序等於是氣泡排序的輕微變形。不同的地方在於從低到高然後從高到低,而氣泡排序則僅從低到高去比較序列裡的每個元素。他可以得到比氣泡排序稍微好一點的效能,原因是氣泡排序只從乙個方向進行比對(由低到高),每次迴圈只移動乙個專案。

以序列(2,3,4,5,1)為例,雞尾酒排序只需要訪問兩次(公升序降序各一次)次序列就可以完成排序,但如果使用氣泡排序則需要四次。

複雜度:

雞尾酒排序最糟或是平均所花費的次數都是o(n2),但如果序列在一開始已經大部分排序過的話,會接近o(n)。

c#**:

using system;

using system.collections.generic;

using system.linq;

using system.text;

int temp;

temp = left;

left = right;

right = temp;

}private static int myarray;

public static void sort(int a)

private static void cocksorts(int intarray)

}static void main(string args)

;cocktailsorter.sort(a);

for (int i = 0; i < a.length; i++)

system.console.readkey();}}

}

氣泡排序 雞尾酒排序

include 交換函式 void swap int a,int i,int j 列印陣列 void printa int a,int len printf n 氣泡排序 int main1 int len sizeof a sizeof a 0 int i,j 外層迴圈控制輪數,每一輪找出乙個最大...

氣泡排序案例,雞尾酒排序

概念 依次比較相鄰的兩個數,將小數放在前面,大數放在後面 第一趟可得到 將最大數放到最後一位,第二趟可得到 將第二大的數放到倒數第二位,如此下去,重複以上過程,直至最終完成排序。由於排序過程中,總是將小數往前放,大數往後放,相當於氣泡往上公升,所以稱作氣泡排序。思路 用二重迴圈實現,外迴圈變數設為i...

C 雞尾酒排序

雞尾酒排序,也就是定向氣泡排序,雞尾酒攪拌排序,攪拌排序 也可以視作選擇排序的一種變形 漣漪排序,來回排序 or 快樂小時排序,是氣泡排序的一種變形。此演算法與氣泡排序的不同處在於排序時是以雙向在序列中進行排序。1 include 2 include 3void swap int x,int y 4...