外部排序复杂性已得到很好的描述here。在第2页和第3页,它很好地描述了phase1
和phase2
。我理解每一步中描述的复杂性。我的问题在第4页上提到的Summing up the costs of phase 1 and phase 2 we get the total running time of
Θ(n log2
(n/m))
行上。在伪代码之后。
根据我的理解 - 第1阶段的复杂性是: O(MlogM)对主内存缓冲区中的所有记录进行排序。 我们有效地填充缓冲区N / M次O(N / M * M log M),即O(NlogM)。
如何:
阶段1:O(NlogM)。
和
阶段2:Θ(n log m / n)
组合结果为Θ(n log2 (n / m))??
答案 0 :(得分:2)
在评估外部算法的性能时,我们通常只计算执行算法所需的磁盘操作数。本文定义了n = N/B
和m = M/B
。
第1阶段实际上只需要Θ(n)
磁盘操作,因为我们只读取和写入每个块一次。现在很明显Θ(n) + Θ(n log n/m) = Θ(n log n/m)