| 算法 | 平均时间 | 最好 | 最坏 | 空间 | 稳定 |
|---|---|---|---|---|---|
| 直接插入 | $O(n^2)$ | $O(n)$ | $O(n^2)$ | $O(1)$ | ✅ |
| 折半插入 | $O(n^2)$ | $O(n\log n)$ | $O(n^2)$ | $O(1)$ | ✅ |
| 希尔排序 | $O(n^{1.3})$ | — | $O(n^2)$ | $O(1)$ | ❌ |
| 冒泡排序 | $O(n^2)$ | $O(n)$ | $O(n^2)$ | $O(1)$ | ✅ |
| 快速排序 | $O(n\log n)$ | $O(n\log n)$ | $O(n^2)$ | $O(\log n)$ | ❌ |
| 简单选择 | $O(n^2)$ | $O(n^2)$ | $O(n^2)$ | $O(1)$ | ❌ |
| 堆排序 | $O(n\log n)$ | $O(n\log n)$ | $O(n\log n)$ | $O(1)$ | ❌ |
| 归并排序 | $O(n\log n)$ | $O(n\log n)$ | $O(n\log n)$ | $O(n)$ | ✅ |
| 基数排序 | $O(d(n+r))$ | — | $O(d(n+r))$ | $O(n+r)$ | ✅ |
算法分类:插入(直接 / 折半 / 希尔)、交换(冒泡 / 快速)、选择(简单选择 / 堆)、归并、基数。
| 比较维度 | 最优算法 |
|---|---|
| 平均时间最快 | 快速排序 |
| 最坏时间保证 | 堆排序、归并排序 |
| 空间最少 | 插入 / 冒泡 / 选择 / 希尔 / 堆($O(1)$) |
| 必须稳定 | 归并排序($O(n\log n)$ 稳定) |
| 数据量小 $(n\leq50)$ | 直接插入排序 |
| 基本有序 | 直接插入或冒泡 |
| 数据量大 | 快速 / 归并 / 堆 |
| 关键字范围小 | 基数或计数排序 |
↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。