比較名稱
時間複雜度
空間複雜度
是否穩定
是否與序列初始狀態有關
適用情況
儲存結構
備註直接插入排序
最好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是已經排好序的,取出...