各排序演算法對比

2021-08-07 22:55:41 字數 1195 閱讀 2862

比較名稱

時間複雜度

空間複雜度

是否穩定

是否與序列初始狀態有關

適用情況

儲存結構

備註直接插入排序

最好o(n),平均o(n^2),最壞o(n^2)

o(1)是是

n較小(小於等於50),初始狀態基本有序,

順序儲存、鏈式儲存

折半插入排序

o(n^2)

o(1)

是比較次數無關

移動次數有關

順序儲存

僅僅是減少了比較元素的次數,約o(nlog2n)

希爾排序(縮小增量排序)

n在某個特定範圍時o(n)^1.3。最壞o(n^2)

o(1)否是

順序儲存

作為插入排序的拓展,對較大規模的排序都可以達到很高的效率,但目前並未得出精確的漸進時間

氣泡排序

最好o(n),平均o(n^2),最壞o(n^2)

o(1)是是

初始狀態基本有序

順序儲存、鏈式儲存

產生的有序子串行全域性有序

快速排序

最好、平均o(nlog2n),最壞o(n^2)

o(log2n)否是

n較大,待排序的關鍵字隨機分布

順序儲存、雙向迴圈鍊錶

所有內部排序演算法中平均效能最優的排序演算法

簡單選擇排序

o(n^2)

o(1)

否比較次數無關,移動次數有關

n較小且記錄本身資訊量較大

堆排序o(nlog2n)

o(1)

否n較大

2-路歸併排序

o(nlog2n)

o(n)

是n較大

通常將歸併排序與直接插入排序結合使用,先利用直接插入排序求得較長的有序子檔案,然後再兩兩歸併

基數排序

o(d(n+r))

o(r)是否

n很大,記錄的關鍵字位數少且可以分解

排序趟數與序列的原始狀態無關:直接插入排序、簡單選擇排序、基數排序。(交換類的排序,其趟數和原始序列狀態有關)。

在基於比較的排序演算法中,每次比較兩個關鍵字的大小之後,僅僅出現兩種可能的轉移,因此可以用一顆二叉樹來描述比較判定過程,由此可以證明:當檔案的n個關鍵字隨機分布時,任何借助於「比較」的排序演算法,至少需要o(nlog2n)的時間。

各排序演算法總結

下面先來介紹內部排序 內部排序主要有八大排序演算法 氣泡排序,快速排序,直接插入排序,希爾排序,簡單選擇排序,堆排序,歸併排序,基數排序。以下討論均預設為公升序排序。氣泡排序 第一次排序,從第乙個元素到第n 1個,依次比較與下一元素的大小,若比下一元素大則交換兩元素位置。每次排序確定乙個最大值。這樣...

各排序演算法效能分析

插入排序 最壞時間始n 2 快速排序和插入排序的區別是 插入排序始將關鍵字插入已排序的子串行中,而快速排序始 對整個檔案,把基準關鍵字放到正確的位置上。快排最壞時間依然是n 2,平均時間始nlgn。在堆排序 的過程中只需乙個輔助空間 所以空間 複雜度為 0 1 堆排序的時間複雜度為 nlgn 由於堆...

各排序演算法總結及實現

1.插入排序 insertsort 插入排序通過把序列中的值插入乙個已經排序好的序列中,直到該序列的結束。插入排序是對氣泡排序的改進。它比氣泡排序快2倍。適用於資料在1000一下的場合下使用插入排序,或者重複排序不超過200資料項的序列。遍歷陣列,遍歷到i時,a0,a1 ai 1是已經排好序的,取出...