【发布时间】:2020-05-18 07:36:34
【问题描述】:
在最坏的情况下,第 k 个最小的元素可能位于最大堆的最后一层。在这种情况下,找到该元素所需的时间可能会达到 O(n),因为其中可能有 n/2 个元素堆的最后一层最坏的情况。 要么 是否有任何其他算法可以在 O(logn) 时间内找到 MAX 堆中的第 k 个最小元素?
n = 没有。堆中的元素数
【问题讨论】:
-
我认为这取决于树的表示。如果每个节点都存储其下方的叶子数,则可以使用二进制搜索来获得 O(log n)。另外,请参阅here 进行相关讨论。