问题标签 [priority-queue]

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 投票
2 回答
1640 浏览

winapi - PostMessage 优先?

是否可以优先处理使用PostMessage(或任何其他相关方法)发送的消息?

例如, IIRCWM_PAINT消息仅在队列中没有其他消息时才被处理。是否可以使用自定义消息实现类似的行为?

如果我使用WM_PAINT特殊参数将自定义消息传递到窗口(我控制 WndProc),它会有类似的行为吗?

0 投票
7 回答
45909 浏览

java - 具有固定大小的 Java PriorityQueue

我正在计算大量可能的算法组合。为了对这些组合进行排序,我用双倍值对它们进行评分,并将它们存储在 PriorityQueue 中。目前,该队列中有大约 200k 个项目,这非常占用内存。实际上,我只需要说列表中所有项目中最好的 1000 个或 100 个。所以我刚开始问自己是否有办法在 Java 中拥有一个固定大小的优先级队列。我应该这样做:该项目是否比已存储的项目之一更好?如果是,则将其插入到相应的位置,然后将评分最低的元素扔掉。

有人有想法吗?再次非常感谢!

马可

0 投票
4 回答
8674 浏览

java - 是否有一个队列(PriorityQueue)实现也是一个集合?

我正在寻找一个PriorityQueue实现,它也是一个Set

如果其元素的compareTo实现必须不要求与equals.

java有没有这样的实现?

更新:我现在使用 SortedSet 作为内部集合来实现它。所以我只需要实现缺少的方法来满足队列接口。我还忘了提到它也必须是有界队列,因此它具有容量并在达到容量时丢弃集合的最后一个元素。

0 投票
8 回答
78572 浏览

java - 当元素更改优先级时更新 Java PriorityQueue

我正在尝试使用 aPriorityQueue来订购使用 a 的对象Comparator

这可以很容易地实现,但对象类变量(比较器计算优先级的对象)可能会在初始插入后发生变化。大多数人都提出了删除对象、更新值并重新插入它的简单解决方案,因为这是优先级队列的比较器生效的时候。

除了在 PriorityQueue 周围创建一个包装类之外,还有更好的方法吗?

0 投票
6 回答
4703 浏览

.net - 为什么 .Net 框架没有优先级队列类?

Stack Overflow 上有一些线程处理在 .Net 和 C# 中实现优先级队列

我的问题具有更基本的性质:为什么 .Net 框架中没有开箱即用的优先级队列?甚至 C++ 标准库也有一个。

0 投票
3 回答
2721 浏览

c++ - 如何比较cpp中的队列?

我需要比较 10 个队列的大小并确定最小的一个以插入下一个元素

创建正常的 if 语句将需要很多情况

那么有没有办法使用队列队列或队列数组来做到这一点?

注意:我需要在 2 种情况下基于 2 个不同的事物来比较我的队列 1-基于大小(其中的节点数) 2-基于其中节点中的数据总数(我有一个单独的计算函数)

0 投票
5 回答
7635 浏览

binary-search - 优先级队列 O(n) 的排序列表实现的插入时间复杂度?

来自维基百科

排序列表实施:就像超市的收银台,但重要的人可以在不太重要的人面前“剪掉”。( O(n) 插入时间, O(1) 获取-下一次, O(n*log(n)) 构建)

我认为如果用二分查找算法搜索插入位置,插入时间复杂度应该是O(log(n))。这里我把作业的到达顺序作为一个优先因素。

那么我错了还是维基百科不正确?

更新:根据 TAOCP 对列表的严格定义:

线性列表是 n >=0 节点 X 1 , X[2], ... , X[n] 的序列,其基本结构属性仅涉及项目之间出现在一行中的相对位置。

我假设列表wikipedia 引用不是linked-list,它可能是array

谢谢。

0 投票
2 回答
1024 浏览

c# - C# XNA 相当于 Java 的 PriorityQueue 和 Comparator?

我正在一块瓷砖上实施 Dijkstra。我想将所有图块存储在优先队列中,按它们与起始位置的距离排序。在 Java 中,这将类似于:

Queue<Point> pq = new PriorityQueue<Point>(new Comparator() { /* sort by distance from start */ });

C# XNA 中的等价物是什么?C# 有一个PriorityQueue类,但它只适用于IComparable对象,而Point对象不是。

0 投票
2 回答
1532 浏览

java - 如何在java中使用迭代器?

我已经实现了优先队列接口来制作堆。你能告诉我如何在上面实现一个迭代器吗?给我指点一些适当的教程,我是java新手,在这里的截止日期很短。实际上,我需要一种基于 Object.id 从堆中查找和修改对象的方法。我不在乎它是否是 O(n)。

// 二进制堆类

0 投票
5 回答
5975 浏览

java - java 的 PriorityQueue 的内置迭代器不会以任何特定顺序遍历数据结构。为什么?

这直接来自Java Docs

此类及其迭代器实现了 Collection 和 Iterator 接口的所有可选方法。方法 iterator() 中提供的 Iterator 不能保证以任何特定顺序遍历优先级队列的元素。如果您需要有序遍历,请考虑使用 Arrays.sort(pq.toArray())。

所以基本上,我的 PriorityQueue 工作正常,但是使用它自己的内置 toString() 方法将它打印到屏幕上导致我看到这个异常在运行,并且想知道是否有人可以解释为什么它是迭代器提供(并使用内部)不按自然顺序遍历 PriorityQueue?