多向归并问题介绍
- 介绍:把k个有序的输入合并成一个有序的输入
- 实际应用场景:合并多个数据库
解决本问题的API
带索引的优先队列实现伪代码
多向归并问题解决JAVA伪代码
public class Multiway
{
pubic static void 归并(多个有序输入流 streams[1],streams[2],...)
{
int N = 输入流的个数
IndexMinPQ<string> pq = new IndexMinPQ<String>(N)
初始化<索引递归序列>
while(pq is not Empty){
printf(pq.min())
i = pq.delMin()
if (streams[i] is not Empty)
pq.insert(streams[i].read_nextitem())
}
public static void main(String[] args)
{
int N = args.length
streams[1],streams[2],... = args[1],args[2],..
归并(streams[1],streams[2],...)
}
}
说明
初始化<索引递归序列> :将多个有序输入流的第一个元素赋值进有序队列pq,streams[i]对应pq[i]