排序基础概念

1113 字
6 分钟
排序基础概念

排序基础概念#

定义#

排序(Sorting)是将一组数据元素按照关键字的递增(或递减)顺序重新排列的过程。

设有 n 个记录的序列 {R₁, R₂, …, Rₙ},其对应关键字为 {k₁, k₂, …, kₙ}。排序就是确定一个排列 p₁, p₂, …, pₙ,使得 k(p₁) ≤ k(p₂) ≤ … ≤ k(pₙ)。

内部排序与外部排序#

分类定义特点
内部排序数据全部放在内存中排序408 重点,涉及所有具体算法
外部排序数据量太大,需借助外存(磁盘)排序涉及多路归并、置换-选择等

408 考纲中绝大多数是内部排序,外部排序单独作为一个考点。

稳定性#

稳定性是区分排序算法的关键指标之一。

定义:若排序前后,关键字相同的两个元素的相对顺序保持不变,则称该排序算法是稳定的;否则是不稳定的

判断方法:

  • 判断不稳定 → 只需找到一个反例
  • 判断稳定 → 需要严格证明

稳定性速查#

不稳定稳定
速排序直接入排序
简单择排序折半插入排序
尔排序泡排序
排序并排序
数排序

口诀:快选希堆不稳定,其余全稳定。

排序算法分类#

分类核心操作代表算法
插入类将元素插入到已排序序列的合适位置直接插入、折半插入、希尔
交换类比较两个元素,若逆序则交换冒泡、快速排序
选择类每趟选出最小(或最大)元素放到最终位置简单选择、堆排序
归并类将两个或多个有序序列合并为一个有序序列二路归并
分配类不基于比较,利用关键字的位信息分配基数排序

评价指标#

指标说明
时间复杂度关键字比较次数 + 记录移动次数
空间复杂度算法执行过程中需要的辅助空间
稳定性相同关键字的相对顺序是否保持

比较类排序的下界:基于比较的排序算法,最坏情况至少需要 O(n log n) 次比较。证明:n 个元素有 n! 种排列,判定树至少需要 ⌈log₂(n!)⌉ 层,由 Stirling 公式得 Ω(n log n)。基数排序不基于比较,因此可以突破这个下界。

排序过程中的”趟”#

408 真题常问”第 k 趟排序后的结果”,不同排序算法中”一趟”的含义不同:

算法一趟的含义
插入排序将第 k+1 个元素插入到前 k 个已排序元素中
冒泡排序一次完整的相邻元素比较与交换过程
快速排序一次 partition,确定一个 pivot 的最终位置
选择排序选出当前未排序部分的最小元素,放到最终位置
堆排序取出堆顶元素并调整堆

考研高频考点#

  • ⭐ 排序稳定性判断(选择题必考)
  • ⭐ 各排序算法的时间/空间复杂度对比(选择题高频)
  • ⭐ 根据场景选择排序算法(综合题)
  • ⭐ “第 k 趟排序后的序列”的推导(选择题/填空题)
  • 比较类排序的 O(n log n) 下界(概念题)
  • 内部排序与外部排序的区分

易错:排序的稳定性与效率无关。快速排序平均最快但不稳定,归并排序稳定但需要 O(n) 额外空间——没有”全面最优”的排序算法。

算法总览#

比较类排序#

算法最好平均最坏空间稳定
直接插入排序O(n)O(n²)O(n²)O(1)
折半插入排序O(n log n)O(n²)O(n²)O(1)
希尔排序~O(n^1.3)O(n²)O(1)
冒泡排序O(n)O(n²)O(n²)O(1)
快速排序O(n log n)O(n log n)O(n²)O(log n)
简单选择排序O(n²)O(n²)O(n²)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(r)关键字可拆分为 d 位
计数排序O(n+k)O(n+k)整数且取值范围不大

关联页面#

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

排序基础概念
https://lingluoa.icu/posts/sorting-basics/
作者
lingluoa
发布于
2026-07-07
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
lingluoa
Hello, I'm lingluoa.
公告
欢迎来到我的博客!不定期更新中。
文章目录
标签
站点统计
文章
53
分类
9
标签
75
总字数
175,771
运行时长
0
最后活动
0 天前
站点信息
构建平台
ESA Pages
博客版本
Firefly v6.15.6
文章许可
CC BY-NC-SA 4.0