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