使用 max heapify 在数组中查找第 k 个最小元素的时间复杂度
Posted
技术标签:
【中文标题】使用 max heapify 在数组中查找第 k 个最小元素的时间复杂度【英文标题】:Time complexity for finding k-th minimum element in array using max heapify 【发布时间】:2022-01-23 21:26:23 【问题描述】:我已经给出了一个数组(注意:它是不是堆排序的)并且我想使用 max heapify 方法找到第 k 个最小元素的时间复杂度? 最初是堆排序的数组有很多可用的解决方案吗? 但在这种情况下它只是一个数组
【问题讨论】:
你能证明自己任何努力解决这个问题吗? 【参考方案1】:堆化前 ? 值的时间复杂度为 O(?)。
要潜在地将所有剩余值与该堆中的顶部值交换(并恢复堆属性),时间复杂度为 O((?-?)log?)。
读取该堆的顶部值(即答案)的时间复杂度为 O(1)。
结合起来,我们得到 O(? + (?-?)log?)
【讨论】:
以上是关于使用 max heapify 在数组中查找第 k 个最小元素的时间复杂度的主要内容,如果未能解决你的问题,请参考以下文章
Max-Heapify 中最坏的情况——你如何得到 2n/3?
MAX-HEAPIFY 中的最坏情况:“最坏情况发生在树的底层正好是半满时”