861得票19回答
如何使堆的构建时间复杂度为O(n)?

有人能帮忙解释如何将构建堆的时间复杂度优化到O(n)吗? 将一个项目插入到堆中的时间复杂度为O(log n),并且插入操作会重复进行n/2次(余下的是叶子节点,不会违反堆属性)。因此,这意味着时间复杂度应该是O(n log n)。 换句话说,对于每个我们“堆化”的项目,它有可能需要向下过滤(即...

436得票19回答
我在Python中使用什么来实现最大堆?

Python中包含heapq模块用于min-heaps,但我需要一个max-heap。在Python中应该使用什么来实现max-heap?

254得票10回答
从整数流中查找运行中位数

可能重复: C语言中的滚动中位数算法 假设从数据流中读取整数。以有效的方式查找到目前为止读取的元素的中位数。 我所了解的解决方法是:我们可以在左侧使用一个最大堆来表示小于有效中位数的元素,在右侧使用一个最小堆来表示大于有效中位数的元素。 在处理传入的元素后,两个堆中的元素数量最...

243得票12回答
在 .Net 中的优先队列

我正在寻找一个基于.NET的优先队列或堆数据结构的实现。 优先队列是比简单排序更灵活的数据结构,因为它们允许新元素在任意时间进入系统。将新任务插入优先队列比每次到达都重新排序所有内容要成本更低。 基本优先队列支持三个主要操作: - Insert(Q,x)。给定具有键k的项x,将其插入优先队...

230得票9回答
为什么两个不同的概念都被称为“堆”?

为什么C语言风格的语言会使用运行时堆来进行动态内存分配,而数据结构也被称为“堆”?它们之间有关联吗?

212得票8回答
堆与二叉搜索树(BST)的比较

堆和二叉搜索树的区别是什么? 何时使用堆,何时使用二叉搜索树? 如果您想要以排序的方式获取元素,在堆和二叉搜索树之间,BST更好吗?

127得票7回答
Java 中是否有堆(Heap)?

我正在将一个C++库移植到Java,需要使用堆(heap)数据结构。是否有标准实现可用,还是我需要自己实现?

122得票6回答
我应该什么时候使用堆?

除了优先队列这个显而易见的答案,堆在我的编程探险中还有什么用处呢?

108得票9回答
如何使heapq根据特定属性来评估堆?

我希望可以使用堆(heap)来处理一组对象,而不仅仅是数字。这些对象会带有一个整数属性(attribute),通过该属性,堆可以进行排序。在Python中,使用heapq是最简单的方法,但是如果我想要按照特定属性(attribute)对其进行排序,应该怎么做呢?

100得票3回答
Python中heapq和PriorityQueue有什么区别?

在Python中有一个内置的heapq算法,它提供了push、pop、nlargest、nsmallest等功能,可以应用于列表。然而,还有queue.PriorityQueue类似乎支持更多或更少相同的功能。它们的区别是什么,何时使用其中之一?