Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 关于N路合并算法soln的质疑_Algorithm_Merge - Fatal编程技术网

Algorithm 关于N路合并算法soln的质疑

Algorithm 关于N路合并算法soln的质疑,algorithm,merge,Algorithm,Merge,我有一个问题,关于其中一个soln的建议 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. o

我有一个问题,关于其中一个soln的建议

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)能帮我理解这一点吗。非常感谢。

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


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

感谢您的澄清。但是,如果文件之间的数字范围重叠,我认为这个解决方案不起作用。i、 例如,如果文件F1、F2和F3包含以下内容,则此方法不起作用。F1:100 200 600 F2:200 250 300 F3:230 260290@irappa当然,算法是这样工作的。拾取F1中的第一个项目,然后拾取第二个项目。(100200)-之后是来自F2的第一个(100200250),依此类推。也许你想展示一些代码,也许我们可以发现错误。如果我想将文件F1、F2和F3合并到文件F4中的单个有序列表中,最好的方法是什么。