排序(理論)

來源:互聯網
上載者:User

1.插入排序:將一個記錄插入到已排好序的有序表中,從而得到一個新的、記錄數增1的有序表

(1)簡單插入排序

(2)折半插入排序

(3)希爾排序:將整個待排記錄序列分成若干個子序列分別進行插入排序,待整個序列基本有序時,再對全體記錄進行一次直接插入排序

2.交換排序

(1)起泡排序:第i趟起泡排序中從L.r[1]到L.r[n-i+1]依次比較相鄰兩個記錄的關鍵字,並在逆序時交換相鄰記錄,其結果是這n-i+1個記錄中關鍵字最大的記錄被交換到第n-i+1的位置上

(2)快速排序:選取一個記錄作為樞軸,將所有關鍵字較它小的記錄都安置在它的位置之前,將所有關鍵字較它大的記錄都安置在它的位置之後,將序列分成兩個子序列

3.選擇排序:選取關鍵字最小的記錄作為有序序列中的第i個記錄

(1)簡單選擇排序

(2)堆選擇排序:在輸出堆頂後,以堆中最後一個元素替代之,自上向下進行調整,又建成一個堆,得到次小值。如此反覆,便能得到一個有序序列

4.歸併排序:將兩個或兩個以上的有序表組合成一個新的有序表

(1)2-路歸併排序:將一維數組中前後相鄰的兩個有序序列歸併為一個有序序列

5.基數排序:先對主關鍵字排序,再對次關鍵字排序

6.各種排序演算法比較:

  平均時間 最壞時間 輔助記憶體 穩定性
簡單選擇排序 n^2 n^2 1 穩定
折半插入排序 n^2 n^2 1 不穩定
希爾排序 nlogn n^2 1 不穩定
起泡排序 n^2 n^2 1 穩定
快速排序 nlogn n^2 logn 不穩定
簡單選擇排序 n^2 n^2 1 穩定
堆選擇排序 nlogn nlogn 1 不穩定
2-路歸併排序 nlogn nlogn n 穩定
基數排序 d(n+rd) d(n+rd) rd 穩定

(1)折半插入,雖然最佳化了比較次數,但是移動次數沒變,因此時間複雜度不變

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.