本系列算法整理自:https://github.com/hustcc/JS-Sorting-Algorithm
同時也參考了維基百科做了一些補充。
排序算法是《數據結構與算法》中最基本的算法之一。
排序算法可以分為內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。常見的內部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數排序等。用一張圖概括:
點擊以下圖片查看大圖:
關于時間復雜度
平方階 (O(n2)) 排序 各類簡單排序:直接插入、直接選擇和冒泡排序。
線性對數階 (O(nlog2n)) 排序 快速排序、堆排序和歸并排序;
O(n1+§)) 排序,§ 是介于 0 和 1 之間的常數。 希爾排序
線性階 (O(n)) 排序 基數排序,此外還有桶、箱排序。
關于穩定性
穩定的排序算法:冒泡排序、插入排序、歸并排序和基數排序。
不是穩定的排序算法:選擇排序、快速排序、希爾排序、堆排序。
名詞解釋:
- n:數據規模
- k:”桶”的個數
- In-place:占用常數內存,不占用額外內存
- Out-place:占用額外內存
- 穩定性:排序后 2 個相等鍵值的順序和排序之前它們的順序相同
- 1、冒泡排序
- 2、選擇排序
- 3、插入排序
- 4、希爾排序
- 5、歸并排序
- 6、快速排序
- 7、堆排序
- 8、計數排序
- 9、桶排序
- 10、基數排序
包含以下內容: