本地资料排序
SCHEDULE LOCAL9 个小节
暂无关联题目选中文字可高亮或加下划线
选中文字高亮 · 下划线

排序

本章在选择题中会考察,在大题中也可能会基于本章的排序算法思想出一道相关的代码题。需要熟练掌握各个排序算法的过程,并且能够手写快速排序的代码。

## 排序

### 排序的基本概念

### 内部排序

- 直接插入排序
- 折半插入排序
- 冒泡排序
- 简单选择排序
- 希尔排序
- 快速排序
- 堆排序
- 二路归并排序
- 基数排序

### 外部排序

### 排序算法的分析

比较排序时的五个维度

遇到排序选择题或算法设计题,建议同时检查 比较次数、移动/交换次数、稳定性、辅助空间和输入特征

  1. 稳定性只讨论关键字相等元素的相对次序;一次交换是否跨过相同关键字,决定算法是否稳定。
  2. 时间复杂度要区分最好、平均、最坏情况。快速排序的分区是否均衡、插入排序的初始有序程度都会改变实际代价。
  3. 空间复杂度除辅助数组外还要考虑递归栈;归并排序和快速排序的空间来源不同。
  4. 非比较排序依赖关键字范围或位数等额外条件;桶排序、基数排序不能在任意比较模型下突破下界。
  5. 外部排序的瓶颈常是读写外存,不应只按内存中的比较次数评价。

写算法时先说明升序或降序、下标范围和稳定性要求;完成后用一组含重复关键字的短序列检查边界和相对次序,往往能及时发现分区或归并条件写反的问题。

学习目录

内部排序

外部排序