多向归并问题【使用带索引的优先队列解决】

多向归并问题介绍

  1. 介绍:把k个有序的输入合并成一个有序的输入
  2. 实际应用场景:合并多个数据库

 

解决本问题的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]

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值