“若键是一字整数,整数排序可以利用数位和字操作,已经改变了本页的比较接口。数据主要驻留外存时,外存排序还要分析块传输;数组内的原地分区不会自动带来最优 I/O 界。”
形式陈述
模型分界
比较决策树只能询问两个键的次序,因
基线算法
Counting sort 用
32 位无符号整数按字节处理时做四趟、每趟 256 个桶,这是固定机器字段上的真实工程方案;渐近分析中不能因此把随
更高级的突破
当
直觉
比较排序每次只得到一个二元次序答案,整数算法却能一次读取多个 digit、抽取重要位或把若干键打包处理。它们突破的是信息访问模型的限制;宇宙大小、字长、允许的算术与随机化一旦改变,复杂度结论也随之改变。
例子与边界
边界与消歧
超长大整数可能跨多个机器字,位提取不再
Radix 正确性不变量
最低有效位优先排序在第
最高有效位优先 radix 则递归各桶,不依赖同一稳定性不变量,但递归栈、空桶和短键终止条件不同。两类都使用 digit,不应只报“
推论与应用
超越比较下界依赖键的数字结构:基数排序按若干 digit 稳定分趟,计数排序在单趟中按有限键域计数并前缀定位。字长、基数和辅助空间决定总时间。
四趟字节排序的完整不变量
对 32 位无符号键、基数
时间为
额外空间为
更快的理论结果常使用乘法、打包、哈希或随机化,并把
参考资料
- Yijie Han, Mikkel Thorup, Integer Sorting in O(n√log log n) Expected Time and Linear Space, FOCS, 2002.
- Arne Andersson et al., Sorting in Linear Time?, STOC, 1995.
- Cormen et al., Introduction to Algorithms, 4th ed., MIT Press, 2022, counting and radix sorting.