我有一个关于 为 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)可以在这里帮助我理解这一点。非常感谢。