Skip to content

比较排序

Comparison sorting

仅通过元素两两比较确定排列次序的排序模型。

条目类型
模型

形式陈述

比较排序只通过询问两个元素的相对次序来获得键信息,目标输出原元素的非降排列。执行可表示为决策树:内部节点是比较,叶节点对应可能排列。对 n 个互异元素,任何确定性比较排序在最坏情况下至少需要

log2(n!)=Ω(nlogn)

次比较。

直觉

比较模型刻意抹去键值的数值结构,只保留“谁小于谁”的问答;算法因此必须从比较答案中辨认众多可能的相对次序。决策树的每个叶子代表一个可区分排列,二叉比较每次至多提供一 bit 分支信息,于是叶子数量的计数信息量直接给出统一下界。这个结论约束的是比较次数,不自动约束数据搬移、缓存访问或并行深度。

比较排序决策树与信息下界
例子与边界

对三个互异元素共有 3!=6 种次序,任何二叉比较决策树高度至少 log26=3;确实存在输入需要三次比较。归并排序和堆排序达到 O(nlogn) 最坏比较数,说明渐近下界紧确。

插入排序的最坏复杂度为 O(n2),并未达到这一界。计数排序、基数排序直接读取整数位或值域桶,因此绕过的是模型假设,而非推翻下界。存在重复键时叶子数会减少,但若算法必须处理所有互异输入,最坏下界仍保留;稳定性和原地性则是正交指标。

推论与应用

数组全序定义可比较输入,比较排序下界解释 nlogn 障碍。归并排序给确定性最坏 O(nlogn) 比较,随机选枢轴的快速排序通常报告期望 O(nlogn),两种界不能只因同阶就省略保证类型。若键是一字整数,超越比较的整数排序会读取数位、打包字段或使用字级操作,因而已经离开本模型。

同一比较决策树视角也能区分排序与选择算法:排序必须恢复全部相对次序,所以有 Ω(nlogn) 下界;只找第 k 小元素不必区分所有 n! 种排列,可在比较模型中做到线性时间。把选择的界直接套给完整排序,或反过来声称任何顺序统计量都需 nlogn,都混淆了输出信息量。

排序成本还随机器而变。外存排序以块传输次数为主,最优界同时含 N、块大小 B 和内存容量 M并行算法模型则分别报告总工作与深度。一个算法可以保持 O(nlogn) 比较工作,却在缓存传输或并行深度上很差。稳定性、原地性、移动次数和分支预测同样是正交指标,不能从“比较最优”自动推出。

参考资料
  • Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, Introduction to Algorithms, 4th ed., MIT Press, 2022, Chapters 6–8。
  • Donald E. Knuth, The Art of Computer Programming, Vol. 3: Sorting and Searching, 2nd ed., Addison-Wesley, 1998, Chapter 5。
关系图谱12 个相邻概念 · 3 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系