【问题标题】:Algorithm of merging two heaps (at different sizes)合并两个堆的算法(不同大小)
【发布时间】:2015-01-26 11:13:51
【问题描述】:

我看到了这个问题: Algorithm for merging two max heaps? 我想补充一点——最大堆的大小不同......

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

谢谢!

【问题讨论】:

    标签: algorithm merge heap big-o


    【解决方案1】:

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

    【讨论】:

    • 我不认为是正确的,因为想想这个:A=[30], B=[20,19,6,18,17,5,4,15,14,13,12,3,2]
    猜你喜欢
    • 2013-02-03
    • 2010-12-08
    • 1970-01-01
    • 2019-09-23
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多