如果数组通常不同,则进行N路合并

时间:2018-01-18 20:47:50

标签: algorithm sorting

据我所知,使用min heap通常是执行和N路合并或排序数组的最佳方式。但是,如果数组在值上相互独特(几乎没有重叠),那么情况仍然如此。例如,我们可以拥有这些数组:

A:{7,11,14,16,18}

B:{1,2,3,4,5,6,7,8,9}

C:{120,130,140,​​150,160,170,180}

D:{35,70,140,​​141,142}

使用min heap仍然是解决此问题的最佳方法吗?是否有可能首先按照{B,A,D,C}的顺序组合数组,然后执行冒泡排序?这似乎会产生Θ(NlogN + M)的复杂性,其中M是条目总数,比标准N路合并中的Θ(MlogN)快一点。

现在,如果我们增加数组之间的重叠量,或添加一些重叠量较大的数组,该怎么办?在什么时候最优解是最小堆?

0 个答案:

没有答案