合并两个堆(不同大小)的算法

时间:2014-11-27 19:37:38

标签: algorithm merge heap big-o

我看到了这个问题: Algorithm for merging two max heaps?我想添加一些东西 - 最大堆的大小不同......

所以我的问题是 - 如果我们有两个具有a和b元素的最大堆A和B,并且我们知道A中的最小元素距离B的根(最大元素)更大 - 我们如何在O(b)处创建一个最大堆?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果我理解正确,max-heap A中的最小元素大于max-heap B中的最大元素,那么你可以将B附加到A(O(b)操作),然后重建最大堆阵列的B部分。堆构造是一个O(n)操作,因为A中的每个元素都大于B中的每个元素,因此B中的堆重构将永远不会更新A中的任何元素。因此总体上它应该仍然是O(b)操作。 / p>