“它的目标 I/O 界是 [ O!\left( \frac{N}{B}\left(1+ \log {M/B}\frac{N}{B}\right)\right). ] 当 (N) 明显大于 (M…”
I/O 上界 ​
在外存模型中有 (N) 项、内存容纳 (M) 项、每块 (B) 项。扫描代价 (Scan(N)=\Theta(N/B)),比较排序最优量级
(
外归并先生成
边界 ​
公式抽象了随机 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.