gpt4 book ai didi

arrays - 插入多个元素后恢复堆属性

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:54:57 26 4
gpt4 key购买 nike

让我们有一个二叉堆,由一个长度为 n 的数组实现。我们在这个数组的末尾写入 k 个元素。之后我们要恢复这个长度为 n+k 的数组的堆属性。

复杂度应该是O(k + (logn)*log(log(n)))。

我的尝试。当然,我们可以使用标准程序恢复复杂度为 O(n+k) 的完整数组的堆属性。但它不能满足这种复杂性。

我也听说过下面的方法。让我们用 O(k) 在最后的 k 个元素上创建一个堆,然后我们创建一个“新堆”,其中第一个元素更大(如果我们使用最大堆)然后是大小为 n 的第一个堆和第二个堆的顶部大小为 k,第一个堆作为新堆的左子堆,第二个堆作为右子堆。之后我们通过 O(log(n+k)) 删除顶部元素。但是当我们使用数组表示时,我真的不明白如何实现这种方法。

最佳答案

最简单的事情是对 k 个新元素中的每一个应用“堆插入”操作,从第一个开始。这具有复杂度 O(k log(n)),如果 k 远小于 n 则优于 O(k + log(n) log(log(n)))

关于arrays - 插入多个元素后恢复堆属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53139543/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com