0

我有一个关于 为 N 路合并算法提出的解决方案之一的疑问

aioobe 成员提出的解决方案如下:

1. Create a priority queue

2. Iterate through each file f
    enqueue the pair (nextNumberIn(f), f) using the first value as priority key

3. While queue not empty
    1. dequeue head (m, f) of queue
    2. output m
    3. if f not depleted
        1. enqueue (nextNumberIn(f), f)

我不完全理解第 2 步和第 3 步。第 2 步是否需要将所有文件的内容读入优先队列?如果是这样的话,记忆不会是一个问题吗?

在第 3 步中,我不明白 3.3(如果 f 没有耗尽,则入队)。有人或OP(aioobe)可以在这里帮助我理解这一点。非常感谢。

4

1 回答 1

1

第 2 步仅从每个文件中读取第一个数字。除非您有大量文件或非常大的数字,否则它不应该是内存问题。

步骤 3.3 读取 m 来自的同一文件中 m 之后的下一个数字。

于 2013-06-02T05:33:25.173 回答