【发布时间】:2018-04-15 01:06:19
【问题描述】:
我在维基百科上找到了min-max heap 的主题。我想知道是否有任何方法可以在O(n) 中构建这个最小-最大堆。
我知道你可以使用最小堆和最大堆来做到这一点,但我不确定这会是什么方法。插入元素需要O(log n) 的时间复杂度,我觉得这种树的构建效率无法比O(n log n) 高。
【问题讨论】:
-
那篇维基百科文章表明您可以使用 Floyd 的 O(n) 算法来构建最小-最大堆。还有一些参考资料有助于解释为什么该算法是 O(n)。
-
我真的很想理解这个算法,但是当我刚开始学习算法时,我很难理解,这就是为什么我希望在这里得到一些帮助。
-
理解简单算法的最佳方法是使用铅笔和纸。在一些输入上尝试一下,您可能会看到它是如何工作的。 (这与堆排序算法中用于构建堆的方法相同,可能更容易解决。)
标签: algorithm minmax-heap