据我所知,使用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)快一点。
现在,如果我们增加数组之间的重叠量,或添加一些重叠量较大的数组,该怎么办?在什么时候最优解是最小堆?