“对外存排序,在两层外存模型中假设 $N M\ge2B$、只有一个磁盘($P=1$),内部内存容纳 $M$ 个不可拆分的原子记录,一次 I/O 搬运 $B$ 个记录,且内部计算免费。在比较/置…”
形式陈述 ​
I/O 上界 ​
在外存模型中有
(
外归并先生成
直觉
外归并排序的关键不是减少比较,而是让每一趟都顺序搬完整块,并用内存同时供给尽可能多的输入 run。内存能容纳约
例子与边界
边界 ​
公式抽象了随机 I/O、CPU 比较与设备并行,不能直接预测 SSD 常数。Distribution sort 需要键分布/分桶条件。
CPU 的
下界按块能区分的排列数计数;若键宇宙允许 radix 或 distribution 技巧,纯比较 I/O 下界需要重新审视。稳定性也须在归并相等键时显式保留原先次序。
Run 生成与多路归并 ​
每次读入
例如
排序公式的推导 ​
每层读写
乘积得到 Sort
推论与应用
在不知道具体块大小
实现与模型边界 ​
同键稳定归并要优先较早 run 中记录。Replacement selection 可生成平均更长 runs,却依输入分布;distribution sort 利用键结构,不受纯比较下界同样约束。SSD 并行、预取和 CPU 比较改变常数,但不会让随机单项访问自动等于块扫描。
参考资料
- Aggarwal, Vitter, “The Input/Output Complexity of Sorting,” CACM, 1988.
- Jeffrey Vitter, Algorithms and Data Structures for External Memory, 2008.