问题标签 [heap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
14 回答
229827 浏览

c# - .Net 中的优先级队列

我正在寻找优先级队列或堆数据结构的 .NET 实现

优先队列是比简单排序提供更多灵活性的数据结构,因为它们允许新元素以任意间隔进入系统。将新作业插入优先级队列比在每次到达时重新排序所有内容更具成本效益。

基本优先级队列支持三个主要操作:

  • 插入(Q,x)。给定一个带有键 k 的项目 x,将其插入优先级队列 Q。
  • 查找最小值 (Q)。返回指向其键值小于优先级队列 Q 中任何其他键的项的指针。
  • 删除-最小值(Q)。从优先级队列 Q 中移除 key 最小的 item

除非我找错了地方,否则框架中没有一个。有人知道一个好的,还是我应该自己推出?

0 投票
6 回答
856 浏览

sorting - 对堆进行排序的最快方法(至少在理论上)是什么?

堆是一个列表,其中适用以下内容:

为了0 <= i < len(list)

我正在寻找就地排序。

0 投票
5 回答
6345 浏览

c++ - C++ 标准模板库优先级队列抛出异常并显示消息“无效堆”

使用 STLpriority_queue时,我一尝试使用pop(). 我可以将我的值推送到队列中,top()队列的值是我所期望和可访问的。pop(),当它去重新堆时,似乎有问题。

我在队列中存储指向模板类的指针。我有比较重载:

priority_queue是类的私有成员:

过载以它的方式工作,因为负距离被认为是无穷大,总是比其他任何东西都大;为了表示无穷大,距离被初始化为 -1。队列需要在顶部保持最小但非负数。

我取消引用重载中的指针,我在那里做什么是允许的吗?而且,我需要重载另一个运算符吗?

我会附上代码,但似乎如果我这样做,它会吓跑人们。请求查看更多,我将附加到另一条消息。

我动态声明了一个指向指针的指针数组,这些是被推送的,因为我假设priority_queue通过引用存储,所以如果我只是将循环中声明的指针放入队列中,该指针就会超出范围。这些指针指向正确的Vertex<type>,并且存在于整个函数中。

Visual Studio 2008 调试器将我带到“stdthrow.cpp”第 24 行。

0 投票
3 回答
5818 浏览

java - Correct heap implementation in a priority queue

My issue is more semantic than functional, As the code does seem to implement the deQueue and enQueue functions correctly.

The reheapDown and reheapUp functions are being used incorrectly, And i believe the issue lies in my heap function

The idea is to rearrange a simple priority queue system so when a patient object is removed, ReheapUp or down correctly rearranges the queue, Which the code does not accomplish. Should i also include the priority queue code, Or is this already too lengthy?

I am using NetBeans IDE 6.0.1, If that helps.

0 投票
2 回答
8829 浏览

python - python中的最小堆

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

0 投票
7 回答
26423 浏览

java - 优先队列/堆更新

一旦 PriorityQueue 中对象的优先级发生变化,Java 是否有一种简单的方法来重新评估堆?我在 中找不到任何迹象Javadoc,但必须有办法以某种方式做到这一点,对吧?我目前正在删除该对象,然后重新添加它,但这显然比在堆上运行更新要慢。

0 投票
3 回答
11775 浏览

c++ - 二叉堆的 C++ 实现

我需要一个实现为二叉树的最小堆。真正快速访问最小节点和插入排序。

stl 或 boost 中是否有一个很好的实现,任何人都可以指出我?

0 投票
6 回答
56169 浏览

data-structures - 我什么时候想使用堆?

除了优先级队列的明显答案之外,堆什么时候对我的编程冒险有用?

0 投票
10 回答
5748 浏览

memory - “a”堆和“the”堆之间有什么关系?

堆是一种树数据结构,其中较高级别的树总是包含比较低级别更大(或更少,如果它是这样设置的话)的值。“该”堆是程序可用于动态分配的一堆空闲 RAM。它们都被称为“堆”,但一个与另一个有什么关系?

0 投票
2 回答
875 浏览

multidimensional-array - 如何使用指针链接两个多维数组?

我需要基本上合并一个二进制堆和线性探测哈希表来制作一个“复合”数据结构,它具有堆的功能,具有哈希表的排序能力。

我需要做的是为每个数据结构(二进制堆和哈希)创建 2 个二维数组,然后用指针将它们相互链接,这样当我更改内容时,例如删除二进制堆中的值,它也会得到在哈希表中删除。

因此,我需要让 Heap 数组的一行从 Heap 指向 Hastable,而 hashtable 数组的一行从 hashtable 指向堆。