在效率方面将两个最小堆合并到一个堆中?

时间:2014-05-21 12:11:34

标签: algorithm data-structures heap

考虑两个分别为大小为n1和n2的最小堆H1,H2,使得H2中的每个节点都大于H1的每个节点。

如何将这两个堆合并到一个堆中" H" ,在O(n2)(不是O(n ^ 2)..)?
(假设以大小> n1 + n2的数组表示的堆)

1 个答案:

答案 0 :(得分:4)

堆可以在线性时间see here内构建。这意味着您只需要获取所有元素并从所有元素构造堆以获得线性复杂性。但是,您可以使用“更花哨”的堆(例如leftist heap)并更快地执行合并操作。