資料結構與演算法 十個排序演算法

2022-06-03 15:54:11 字數 911 閱讀 2613

排序演算法是《資料結構與演算法》中最基本的演算法之一,排序演算法可以分為內部和外部排序。

內部排序:資料記錄在記憶體中進行排序。

外部排序:因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。

常見內部排序演算法:插入排序、希爾排序、選擇排序、氣泡排序、快速排序、堆排序、基數排序等。

用乙個**概括:

平方階 (o(n2)) 排序 各類簡單排序:直接插入、直接選擇和氣泡排序。

線性對數階 (o(nlog2n)) 排序 快速排序、堆排序和歸併排序;

o(n1+§)) 排序,§ 是介於 0 和 1 之間的常數。 希爾排序

線性階 (o(n)) 排序 基數排序,此外還有桶、箱排序。

穩定的排序演算法:氣泡排序、插入排序、歸併排序和基數排序。

不是穩定的排序演算法:選擇排序、快速排序、希爾排序、堆排序。

1. 資料結構與演算法——十個排序演算法之一 · 氣泡排序

2.資料結構與演算法——十個排序演算法之二 · 選擇排序

3.資料結構與演算法——十個排序演算法之三 · 插入排序

4.資料結構與演算法——十個排序演算法之四 · 希爾排序

5.資料結構與演算法——十個排序演算法之五 · 歸併排序

6.資料結構與演算法——十個排序演算法之六 · 快速排序

7.資料結構與演算法——十個排序演算法之七 · 堆排序

8.資料結構與演算法——十個排序演算法之八 · 計數排序

9.資料結構與演算法——十個排序演算法之九 · 桶排序

10.資料結構與演算法——十個排序演算法之十 · 基數排序

資料結構與演算法 十個排序演算法之九 桶排序

桶排序是計數排序的公升級版。它利用了函式的對映關係,高效與否的關鍵就在於這個對映函式的確定。為了使桶排序更加高效,我們需要做到這兩點 在額外空間充足的情況下,盡量增大桶的數量 使用的對映函式能夠將輸入的 n 個資料均勻的分配到 k 個桶中 同時,對於桶中元素的排序,選擇何種比較排序演算法對於效能的影...

資料結構與演算法 十個排序演算法之六 快速排序

快速排序是由 東尼 霍爾 所發展的一種排序演算法。在平均狀況下,排序 n 個專案要 n log n 次比較。在最壞狀況下則需要 n2 次比較,但這種狀況並不常見。事實上,快速排序通常明顯比其他 n log n 演算法更快,因為它的內部迴圈 inner loop 可以在大部分的架構上很有效率地被實現出...

資料結構與演算法 十個排序演算法之五 歸併排序

歸併排序 merge sort 是建立在歸併操作上的一種有效的排序演算法。該演算法是採用分治法 divide and conquer 的乙個非常典型的應用。作為一種典型的分而治之思想的演算法應用,歸併排序的實現由兩種方法 和選擇排序一樣,歸併排序的效能不受輸入資料的影響,但表現比選擇排序好的多,因為...