Tip 為了演示更加清楚,本文中所有的動畫都放慢了速度,因此GIF大小對比之前會有所增大,圖片載入速度會變慢,如果你想獲取所有的超清動畫,在公眾號 五分鐘學演算法 回覆 掘金 可獲得資料。
在前面的章節中詳細的講解分析了十大經典排序演算法,本文將進行一個大總結同時分析它們的時間複雜度與穩定性。
排序演算法是《資料結構與演算法》中最基本的演算法之一。
排序演算法可以分為內部排序和外部排序。
內部排序是資料記錄在記憶體中進行排序。
而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。
常見的內部排序演算法有:插入排序、希爾排序、選擇排序、氣泡排序、歸併排序、快速排序、堆排序、基數排序等。
用一張圖概括:

關於時間複雜度:
- 平方階 (O(n2)) 排序 各類簡單排序:直接插入、直接選擇和氣泡排序。
- 線性對數階 (O(nlog2n)) 排序 快速排序、堆排序和歸併排序;
- O(n1+§)) 排序,§ 是介於 0 和 1 之間的常數。 希爾排序
- 線性階 (O(n)) 排序 基數排序,此外還有桶、箱排序。
關於穩定性:
-
穩定的排序演算法:氣泡排序、插入排序、歸併排序和基數排序。
-
不是穩定的排序演算法:選擇排序、快速排序、希爾排序、堆排序。
1. 氣泡排序

2. 選擇排序

3. 插入排序

4. 希爾排序

5. 歸併排序

6. 快速排序

7. 堆排序

8. 計數排序

9. 桶排序

10. 基數排序
