氣泡排序公升級版 雞尾酒排序

2021-08-26 08:42:45 字數 2160 閱讀 8950

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

雞尾酒排序演算法的運作如下:

;// 從左到右,將最小的放到左邊

for(

int i = right; i > left; i--)}

left ++;}

system.out.

println

(count +

" "

+ swapcount)

;return nums;

}private

void

swap

(int

nums,

int i,

int j)

期望:陣列長度越大,耗時越長,且呈現幾何倍數遞增

配置項配置值

t(1) = 長度1的陣列排序耗時

毫秒級:t(1), t(10), t(100), t(1000) 10毫秒

秒級:t(10000) 140毫秒

十秒級:t(100000) 10秒

千秒級:t(1000000) 1000秒

從上到下遞增倍數是:10倍, 7倍, 70倍

分水嶺是陣列長度10000.

整個排序期間,並未建立多餘的陣列占用記憶體(除了幾個使用者輔助判斷查詢次數,交換次數的變數)

時間複雜度:介於o(n)~o(n*n)之間

空間複雜度:o(1)

我測試了十多次,總體上看,雞尾酒氣泡排序效能略優於單向氣泡排序

氣泡排序 雞尾酒排序

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 外層迴圈控制輪數,每一輪找出乙個最大...

雞尾酒排序 氣泡排序最終版

雞尾酒排序 每一輪首先從前往後遍歷出乙個最大值放在最後面,然後從後往前遍歷乙個最小值放在最前面,即每一輪遍歷選出乙個最大值和乙個最小值。適合用於大部分元素已經有序的情況 時間複雜度和空間複雜度?是否穩定性?簡單粗暴的雞尾酒排序 public static void jiweijiu1 int a 從...

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

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