25得票2回答
在C++中有简单的方法制作小根堆吗?

我对C++很陌生,不知道是否有一种方式可以使用标准库在C++中创建一个小根堆。

25得票2回答
.NET中的堆类

可能重复: 在C#中有类似堆的类吗? .NET中是否有像堆这样的类? 我需要一种集合,可以从中检索最小元素。 我只需要3种方法: Add() RemoveMinElement() GetMinElement() 我不能使用排序列表,因为键必须唯一,并且我可能有多个相同的元素。

23得票1回答
Python heapify() 时间复杂度

def heapify(A): for root in xrange(len(A)//2-1, -1, -1): rootVal = A[root] child = 2*root+1 while child < len(A): ...

23得票2回答
Dijkstra算法。使用最小堆作为最小优先队列。

我正在阅读《CLRS第三版》中关于Dijkstra算法的内容(第662页)。以下是书中的一段我不理解的部分: 如果图足够稀疏 - 特别是,E = o(V^2 / lgV) - 我们可以通过使用二进制最小堆实现min-priority队列来改进算法。 为什么图应该是稀疏的? 这...

23得票8回答
如何在Python中维护堆中的字典?

我有一个如下的字典:{'abc':100,'xyz':200,'def':250 .............} 这是一个以实体名称为键,值为实体计数的字典。我需要从字典中返回前10个元素。 我可以编写一个堆来完成,但我不确定如何进行值到键的映射,因为某些值将相等。 是否有其他数据结构可以做...

22得票8回答
使用二叉树实现堆

这个问题之前在 Stack Exchange 上被问过,但没有得到答案。 之前的问题链接: 二叉树结构实现二叉堆 如何在二叉树中实现堆。要实现堆,需要知道最后一个已填充节点和第一个未占用节点。这可以通过树的层序遍历来完成,但是如果这样做,则找到第一个未占用节点的时间复杂度将为 O(n)。所...

22得票5回答
为什么C++中的堆被实现为算法而不是容器?

我想知道为什么堆概念被实现为算法(make_heap, pop_heap, push_heap, sort_heap)而不是容器。我特别感兴趣的是,有人的解决方案是否能够解释为什么set和map是容器,而不是类似于算法集合(make_set add_set rm_set 等)。

21得票8回答
一个有序数组是否是最小堆?最大堆的最小值是多少?

我学习了最小堆和最大堆,并有几个问题: 一个排序数组是否是最小堆? 最大堆的最小值是多少?

20得票3回答
使用STL来维护小根堆的简便方法是什么?

对于用户自定义的结构体,我了解到很容易实现。只需要重载运算符<即可。但是对于int/float等基本类型,我真的需要重载运算符<吗?以下是我的尝试: #include <iostream> #include <algorithm> ...

20得票3回答
Python:更新heapq中元素的值

如果我有一个包含一些元素的heapq,例如:import heapq class Element(object): def __init__(self, name, val): self.name = name self.val = val if ...