排序演算法總結

2021-05-28 10:21:01 字數 1677 閱讀 3092

排序演算法 

平均時間複雜度由高到低為:

說明:雖然完全逆續的情況下,快速排序會降到選擇排序的速度,不過從概率角度來說(參考資訊學理論,和概率學),不對演算法做程式設計上優化時,快速排序的平均速度比堆排序要快一些。

名稱資料物件

穩定性時間複雜度

空間複雜度

描述平均

最壞插入排序

陣列、鍊錶

√o(n

2)o(1)

(有序區,無序區)。把無序區的第乙個元素插入到有序區的合適的位置。對陣列:比較得少,換得多。

直接選擇排序陣列×

o(n2)

o(1)

(有序區,無序區)。在無序區里找乙個最小的元素跟在有序區的後面。 對陣列:比較得多,換得少。鍊錶√

堆排序陣列

×o(nlogn)

o(1)

(最大堆,有序區)。從堆頂把根卸出來放在有序區之前,再恢復堆。

歸併排序

陣列、鍊錶

√o(nlogn)

o(n) +o(logn) , 如果不是從下到上

把資料分為兩段,從兩段中逐個選最小的元素移入新資料段的末尾。可從上到下或從下到上進行。

快速排序陣列×

o(nlogn)

o(n2)

o(logn) ,o(n)

(小數,樞紐元,大數)。

accum qsort鍊錶√

o(nlogn)

o(n2)

o(logn) ,o(n)

(無序區,有序區)。把無序區分為(小數,樞紐元,大數),從後到前壓入有序區。

決策樹排序

√o(logn!)

o(n!)

o(n)

計數排序

陣列、鍊錶

√o(n)

o(n+m)

統計小於等於該元素值的元素的個數 i,於是該元素就放在目標陣列的索引 i位。(i≥0)

桶排序陣列、鍊錶

√o(n)

o(m)

將值為 i 的元素放入i 號桶,最後依次把桶裡的元素倒出來。

基數排序

陣列、鍊錶

√一種多關鍵字的排序演算法,可用桶排序實現。

排序演算法分類

交換排序法

氣泡排序 | 

雞尾酒排序 | 

奇偶排序 | 

梳排序 | 

gnome sort | 

快速排序

選擇排序法

選擇排序 | 

堆排序插入排序法

插入排序 | 

希爾排序 | 

tree sort | 

library sort | 

patience sorting

歸併排序法

歸併排序 | 

strand sort

非比較排序法

基數排序 | 

桶排序 | 

計數排序 | 

鴿巢排序 | 

burstsort | 

bead sort 其他

拓撲排序 | 

排序網路 | 

bitonic sorter | 

batcher odd-even mergesort | 

pancake sorting

低效排序法

bogosort | 

stooge sort

排序演算法總結

1 直接插入排序 1 穩定性 穩定 2 適用情況 待排記錄規模較小,或者記錄已經基本有序 2 希爾排序 1 穩定性 不穩定 2 特點 希爾排序的執行時間依賴於增量序列,它的效率比直接插入排序有較大的改進。3 氣泡排序 1 穩定性 穩定 2 特點 當待排記錄基本有序是,氣泡排序是不錯的選擇 但由於氣泡...

排序演算法總結

1 選擇排序 選擇排序的思想是依次從待排序數列中選擇最大 小 的 第二大 小 的等等,然後依次重新排列為有序數列。void selectionsort int a,int n if min i 時間複雜度o n 2 2 歸併排序 void merge int a,int left,int mid,i...

排序演算法總結

學習了這麼多的排序演算法,還沒有做個總結,呵呵 氣泡排序 氣泡排序是最慢的排序演算法。在實際運用中它是效率最低的演算法。它通過一趟又一趟地比較陣列中的每乙個元素,使較大的資料下沉,較小的資料上公升。它是 o n 2 的演算法。快速排序 快速排序是乙個就地排序,分而治之,大規模遞迴的演算法。從本質上來...