【发布时间】:2022-01-23 21:26:23
【问题描述】:
我已经给出了一个数组(注意:它是不是堆排序的)并且我想使用 max heapify 方法找到第 k 个最小元素的时间复杂度? 最初是堆排序的数组有很多可用的解决方案吗? 但在这种情况下它只是一个数组
【问题讨论】:
-
你能证明自己任何努力解决这个问题吗?
标签: time-complexity heap
我已经给出了一个数组(注意:它是不是堆排序的)并且我想使用 max heapify 方法找到第 k 个最小元素的时间复杂度? 最初是堆排序的数组有很多可用的解决方案吗? 但在这种情况下它只是一个数组
【问题讨论】:
标签: time-complexity heap
堆化前 ? 值的时间复杂度为 O(?)。
要潜在地将所有剩余值与该堆中的顶部值交换(并恢复堆属性),时间复杂度为 O((?-?)log?)。
读取该堆的顶部值(即答案)的时间复杂度为 O(1)。
结合起来,我们得到 O(? + (?-?)log?)
【讨论】: