外部合并排序的复杂性是什么?

问题描述 投票:1回答:2

wikipedia中,外部排序的时间复杂度如下

(N / B).log (M / B)(N / B)

其中N是数据的总大小,M是存储器的大小,B是存储器中的块数。在对RAM中的每个块进行排序时,我可以理解日志部分,但是我无法理解日志的基础为M / B

任何帮助将不胜感激!

merge time-complexity external mergesort
2个回答
0
投票

在排序阶段之后,合并阶段过程m并行运行,因此您获得了基础m = M/B

来源:wikipedia.org/wiki/External_memory_algorithm


0
投票

M是内存大小,...

混乱是由于:

B是内存中的块数。

在Wiki文章中,B是每个块的块大小,因此内存中的块数= M / B。 Wiki的时间复杂度忽略了以下事实:其中一个块用于合并输出,并且该算法使用k方式合并,其中k =(M / B)-1。

© www.soinside.com 2019 - 2024. All rights reserved.