| 项目 | 值 |
|---|---|
| 主题 | 内部排序算法对比 |
| 核心概念 | 全部记录存于内存的排序;408 考查约 8 种排序算法 |
| 时间复杂度 | 最好 $O(n)$(插入/冒泡);平均 $O(n\log n)$(快排/堆/归并);最坏 $O(n^2)$(插入/选择/快排);基数 $O(d(n+r))$ |
| 稳定性 | 部分稳定、部分不稳定(口诀:快选希堆) |
| 难度 | ⭐⭐⭐ |
内部排序是指待排序记录全部存放在内存中进行的排序过程。408 大纲要求掌握以下排序算法:
稳定性:若排序后相等元素的相对顺序不变,则称该排序算法稳定。
比较类排序的下界:基于比较的排序算法,最坏情况下时间复杂度下界为 $O(n\log n)$。
| 概念 | 定义 |
|---|---|
| 稳定排序 | 排序后相等元素保持原有相对顺序 |
| 内排序 | 所有数据在内存中完成排序 |
| 外排序 | 数据量大,需要在内外存之间交换数据 |
| 趟 | 排序过程中对数据进行的一次完整扫描或处理 |
| 堆 | 完全二叉树,大根堆:父 $\geq$ 子;小根堆:父 $\leq$ 子 |
| 枢轴(pivot) | 快速排序中选定的划分基准元素 |
| 考点 | 说明 |
|---|---|
| 时间/空间复杂度 | 最好、最坏、平均情况,需分别记忆 |
| 稳定性判断 | 快速、希尔、简单选择、堆排序不稳定 |
| 快排的划分过程 | 选定 pivot,左右指针交替扫描,写出每趟结果 |
| 堆的调整(筛选) | 插入元素上浮,删除堆顶下沉,写出调整过程 |
| 给定序列判断排序方法 | 根据中间状态推断使用了哪种排序 |
| 各排序的适用场景 | 数据量小用插入,大规模用快排/归并,需稳定用归并 |
5,3,8,1,6,2,7,4(8 个小木板)