分别考虑大小为n1和n2的两个最小堆H1、H2,使得H2中的每个节点都大于H1中的每个节点。
如何将这两个堆合并为一个堆“h”,在o(n2)(不是o(n2)…)?
(假设以大于n1+n2的数组表示的堆)

最佳答案

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

07-26 09:30