【发布时间】: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
我看到了这个问题: Algorithm for merging two max heaps? 我想补充一点——最大堆的大小不同......
所以我的问题是 - 如果我们有两个最大堆 A 和 B 具有 a 和 b 元素,并且我们知道 A 处的最小元素比 B 的根(最大元素)更大 - 我们如何在 O(b) 处创建一个最大堆?
谢谢!
【问题讨论】:
标签: algorithm merge heap big-o
如果我理解正确,最大堆 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]