12得票1回答
最大堆与最小堆在寻找第k小元素时的区别

我不太明白为什么查找第k小的元素要使用最大堆方法,而查找第k大元素要使用最小堆方法。难道使用最小堆寻找第k小元素不更合理吗?因为最小元素始终在根节点。所以如果我们想找到第三个最小元素,我们只需删除根节点两次,再建立堆,即可得到第三个最小元素。在最大堆中,最小元素不在根节点,那么为什么还要使用最...

11得票1回答
使用小根堆合并k个有序列表的算法证明

我正在阅读《算法导论》,在练习题6.5-8中遇到了一些问题。 给出一个O(n lg k)时间复杂度的算法,将k个排序列表合并为一个排序列表,其中n是所有输入列表中元素的总数。(提示:使用一个包含k个元素的小根堆进行k路归并。) 答案就像大家说的一样: 1)使用k个列表的第一个元素...

11得票2回答
Python中的小根堆

我想通过定义自定义比较函数将一组对象存储在最小堆中。我看到Python发行版中有可用的heapq模块。是否可以使用此模块使用自定义比较器?如果不行,是否有其他人构建了一个自定义最小堆?

8得票1回答
Python:使用最大堆和最小堆查找运行中位数

我正在尝试返回一系列流数据的运行中位数。为此,我使用最大堆(存储系列的下半部分的值)和最小堆(存储系列的上半部分的值)。 特别地,我使用Python(2.0)内置的最小堆数据结构来自heapq模块(https://docs.python.org/2/library/heapq.html)。要...