“边界之一:绕过模型不算违反下界。计数排序直接把键值当下标使用,时间 $O(n+k)$;基数排序按数位分配,时间 $O(d(n+k))$——对范围在 $[0,n^2)$ 内的整数取基数 $n$…”
形式陈述 ​
基数排序把键分成
直觉
基数排序逐位处理键,并依赖每一轮稳定排序保留此前低位次序:新处理的高位优先级覆盖旧的低位顺序,相同高位内部却仍保留低位结果,于是逐位累积成完整次序。LSD 版本从最低位到最高位,完成第
例子与边界
十进制数按个位稳定排,再按十位稳定排,可得到两位数整体有序。若每轮排序不稳定,相同十位的元素会打乱个位次序,LSD 正确性失效。取基数
对三位十进制数
负数需分离符号或使用适配的编码;变长字符串的结束符次序要明确定义。位数
推论与应用
计数排序常作为稳定单轮,词提供位序列。若
超越比较的整数排序研究更广的字级分配、打包和递归结构,基数排序只是其中一条基线。固定宽度整数、定长字符串、IP 地址和按字段编码的数据库键都可逐位排序,但编码、稳定性和机器模型必须同时固定。若数据驻留外存,外存排序按块传输计费;一次数位分桶可能产生大量随机写,RAM 上的
参考资料
- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, Introduction to Algorithms, 4th ed., MIT Press, 2022,Parts I–VI。
- Donald E. Knuth, The Art of Computer Programming, Vol. 3: Sorting and Searching, 2nd ed., Addison-Wesley, 1998,Chs. 5–6。