问题标签 [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 回答
37485 浏览

c++ - 自定义类上的 STL 优先级队列

我很难让我的优先级队列识别它应该排序的参数。我在自定义类中重载了小于运算符,但它似乎没有使用它。以下是相关代码:

节点.h

节点.cpp

getTotalCost() 返回一个整数

主文件

我错过了什么和/或做错了什么?

0 投票
4 回答
3128 浏览

java - 并发队列 - 一般问题(描述和用法)

我在理解并发队列的概念时遇到了一些麻烦。我理解队列是一个先进先出或先到先得的数据结构。

现在,当我们添加并发部分时,我将其解释为线程安全(如果不正确,请告诉我)事情变得有点模糊。并发是指各种线程可以添加到队列或从队列中删除(服务项目)的方式?并发是否为这些操作提供了一种排序感?

我将非常感谢对并发队列功能的一般描述。这里的类似帖子并不像我希望的那样普遍。

还有并发优先级队列之类的东西吗?它的用途是什么?

非常感谢您提供有关此主题的任何简短解释或有用的链接。

0 投票
2 回答
3144 浏览

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

可能重复:
.Net 中的优先级队列

这个问题很相似,但我想确切地知道:

.Net 中是否有任何类/结构/... 用于优先级队列?就像在 STL 中那样 priority_queue。它接受一个比较函数来支持自定义排序。

我在 .Net 中找到的最好的东西是SortedList< Key, Value >,它按 Key 对它的值进行排序。因此,一种解决方案是为 Key 类实现自定义的Compare接口。但我不能将我的元素分成键/值对。我有必须使用自定义函数根据其值排队的原子元素。

那么,.Net 中是否有任何集合类接受比较函数来对其元素进行排序?

有什么方法可以派生支持此功能的 .Net 类(可能是HashSet )?


笔记:

  • 我知道许多第三方为此实现了非常好的类。也许一个很好的例子是PowerCollections。但我想使用.Net中的现有类快速简单的解决方案
  • 我正在使用 .Net Framework 3.5
0 投票
3 回答
576 浏览

java - Java:设计问题 - 集合之间的最小对

我有两组Animal对象。动物之间的距离是使用一种特定的算法来定义的,该算法着眼于它们的特征。我正在尝试设计一种方法来从两组(每个一组)中找到最小化距离的对。

我有一个想法:创建一个参数化Tuple类来配对Animals. PriorityQueue使用比较器创建一个以Tuple<Animal>根据两个成员之间的距离进行排序。然后,从PriorityQueue.

这是好的设计,还是浪费?我相信它会在 O(m+n) 时间内运行,其中 m 和 n 是每个集合的大小。

如果Tuple是一个参数化类,那么在其上使用仅适用于的 Comparator 将如何工作Animal

我想使用这种findMinimalPair方法来创建一个生成树,以最小化Animal对象图的距离。如果我通过不断地从 中弹出对来做到这一点PriorityQueue,检查以确保每对仍然包含每个集合的一个成员,该怎么办?

这是一个基本的例子。以下是距离:

假设集合是:

A0

A1、A2、A3

这是元组的排序顺序,按距离:

所以我们看到 A3 是最接近的。然后将 A3 移动到第一个集合中:

A0, A3

A1, A2

再次,我们检查最小对:

现在A2被拿走了。看看它怎么运作?

这就是我最终做的。注释?

0 投票
2 回答
449 浏览

c++ - priority_queue 的问题 - 在堆后写入内存

我正在尝试使用priority_queue,并且程序不断失败并出现错误消息HEAP CORRUPTION DETECTED。

以下是片段:

类 Message 具有重载的运算符 > 和 <

在这里我填满队列:

在主程序中:

我不知道似乎是什么问题。当我推送大约 8 个项目时会发生这种情况,并且在线失败

在 <队列>

:(

这是消息类的定义——非常简单:

};

Poruka - 消息

0 投票
3 回答
2492 浏览

c - 在 C 中使用条件变量实现优先级队列

我目前对条件变量的理解是,所有阻塞(等待)的线程都被插入到一个基本的 FIFO 队列中,当调用 signal() 时,第一项被唤醒。

有没有办法修改这个队列(或创建一个新结构)来代替优先级队列?我已经考虑了一段时间,但大多数解决方案最终都受到 CV 和互斥体固有的现有队列结构的阻碍。

谢谢!

0 投票
2 回答
1136 浏览

javascript - 如何在网页上最好地确定 HTTP 请求的优先级?

我需要优先下载(在我的情况下)图像。

为此,我宁愿使用某种插件(最好用于 jQuery),让我无需构建自己的下载队列机制就可以做到这一点。

考虑这种情况:

你有一个网页。您的网页能够向给定用户显示三个图像。根据用户的要求,这些图像一次只显示一个。

然后,理想情况下,您希望从上到下加载图像,直到用户做出选择。然后,您会希望他的选择在队列中向上移动并成为下一个(他所做的每一个选择)。

当然,在只有三张图片的页面中,这并不是真正的问题,但随着图片越来越多,这变得很重要。

我目前只使用背景图像来显示图像,并希望保持这种状态。

哦,另外,我希望在加载图像时显示“spinner.gif”。

有什么建议么?

谢谢。

更新我最终基于此制作了自己的排队系统:http: //jqueryfordesigners.com/image-loading/

0 投票
3 回答
8099 浏览

java - Java:从匿名内部类访问局部变量?(优先队列)

我想使用 aPriorityQueue对图进行拓扑排序。为简洁起见,我想为比较器使用匿名内部类。但是,我需要访问图表g以确定我正在查看的节点的度数。这可能吗?

更正的代码

0 投票
2 回答
4646 浏览

algorithm - 最小生成树的运行时间?(Prim 方法)

我编写了一个使用 Prim 方法解决 MST 的代码。我读到这种实现(使用优先级队列)应该有 O(E + VlogV) = O(VlogV) 其中 E 是边数和 V 边数但是当我查看我的代码时它根本不那样。如果有人能为我解决这个问题,我将不胜感激。

对我来说,运行时间似乎是这样的:

while 循环需要 O(E) 次(直到我们遍历所有边) 在该循环中,我们从 Q 中提取一个元素,这需要 O(logE) 时间。第二个内部循环需要 O(V) 时间(尽管我们不是每次都运行这个循环,很明显它会运行 V 次,因为我们必须添加所有顶点)

我的结论是运行时间为:O( E(logE+V) ) = O( E*V )。

这是我的代码:

0 投票
3 回答
9383 浏览

java - Java 优先级队列应该如何工作?

简短的故事,我正在实现一个图表,现​​在我正在研究 Kruskal,我需要一个优先级队列。我对优先级队列的定义是,具有最小键的元素会排在第一位?这是错的吗?因为当我在队列中插入加权边(或数字)时,它们最终没有排序。

那会打印出来;[1、54、51、102、99、55]。这不像我想要的那样排序!是的,我做了一个比较器,它进入优先级队列,从边缘对象中提取数字并基于该 int 进行比较。所以这应该有效,还是我完全误解了这个数据结构如何工作的整个概念?