算法笔记--八个常见排序算法总结
一、 分類描述
1. 插入排序
? ? ? ? ??直接插入排序:算法簡單,穩定,適用于數據量小的情況
? ? ? ? ?希爾排序:直接插入排序的改進版,不穩定,對于待排序序列的不同情況效率相近
2. 交換排序
? ? ? ? ? 冒泡排序:算法簡單,穩定,在數據基本有序的情況下效率較高
? ? ? ? ?快速排序:算法效率高,不穩定,需要額外的輔助空間
3. 選擇排序
? ? ? ? ?直接選擇排序:任何情況時間復雜度均為O(n^2),不穩定,其優勢在于交換次數少
? ? ? ? ?堆排序:不穩定,對序列的原始順序不敏感,適用于數據量大的情況
4. 歸并排序
? ? ? ? ??分治策略,穩定,適用于待排序列整體無序、部分有序的情況,需要額外的輔助空間
5. 基數排序
? ? ? ? ? 穩定;適用范圍有限;當數據位數較小時,時間復雜度近似為O(n),效率高于其它的穩定性排序算法
二、總結比較表
| 類別 | 排序方法 | 時間復雜度 | 空間復雜度 | 穩定性 | 復雜性 | ||
| 最好 | 最壞 | 平均 | |||||
| 插入排序 | 直接插入 | O(n) | O(n^2) | O(n^2) | O(1) | O | 簡單 |
| 希爾排序 | O(n^1.3) | O(n^2) | O(n^1.x) | O(1) | X | 較復雜 | |
| 交換排序 | 冒泡排序 | O(n) | O(n^2) | O(n^2) | O(1) | O | 簡單 |
| 快速排序 | O(nlogn) | O(n^2) | O(nlogn) | O(logn) | X | 較復雜 | |
| 選擇排序 | 直接選擇 | O(n^2) | O(n^2) | O(n^2) | O(1) | X | 簡單 |
| 堆排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(1) | X | 較復雜 | |
| ? | 歸并排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(n) | O | 較復雜 |
| ? | 基數排序 | O(d(n+r)) | O(d(n+r)) | O(d(n+r)) | O(n+r) | O | 較復雜 |
轉載于:https://www.cnblogs.com/ltxdzh/p/3960141.html
總結
以上是生活随笔為你收集整理的算法笔记--八个常见排序算法总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Java] 关键字final、stat
- 下一篇: 创建应用服务器连接客户端