首页 > TAG信息列表 > priority-queue

java-使用链表实现优先级队列

我已经使用链表实现了优先级队列.在此优先级队列中,最小的int值具有最大值,因此,通过调用remove方法,将删除最小的方法. 节点类的代码 public class Node { public int iData; public Node next; public Node(int x) { iData = x; } public void d

Java的PriorityQueue是不稳定的还是不确定的?

我正在遍历Java的PriorityQueue文档,并遇到了一个重要注意事项: If multiple elements are tied for least value, the head is one of those elements — ties are broken arbitrarily 我想了解该粗体字的实际含义.我感兴趣的两个属性是PriorityQueue的稳定性及其确定性. 据

java-PriorityQueues中的元素何时排序?

PriorityQueue类是明智地插入元素优先级还是只是当我们仅轮询元素时才发现最高优先级元素并将其返回?解决方法:从JDK本身的源代码(格式化我的): 优先级队列表示为平衡的二进制堆:queue [n]的两个子级是queue [2 * n 1]和queue [2 *(n 1)]. 如果比较器为空,则按比较器或元素的自然顺序

调度程序与多线程

根据Single-Threaded Application with Long-Running Calculation MSDN示例,有可能仅在1个线程中创建响应式GUI.感谢Dispatcher对象,因为我们可以设置工作项的优先级. 我的问题是,在可能的情况下,在后台线程中执行简单任务(假设我们只有1个单核CPU)有什么意义? 谢谢解决方法:从本质

Java优先级队列实现-内存位置

我正在尝试在Java中实现高效的优先级队列.我已经很好地实现了二进制堆,但是它没有理想的缓存性能.为此,我开始研究二进制堆中的Van Emde Boas布局,从而使我得到了二进制堆的“阻塞”版本,其中的诀窍是计运算符索引和父索引. 尽管我能够做到这一点,但缓存行为(和运行时间)变得更糟.

java-将PriorityQueue转换为排序数组的最佳方法

我担心从包含数千个元素的Java PriorityQueue创建排序数组的不同样式. Java 8 docs说 If you need ordered traversal, consider using Arrays.sort(pq.toArray()). 但是,我确实喜欢流式API,所以刚开始的时候 Something[] elems = theHeap.stream().sorted(BY_CRITERION.rever

为什么我的Java中的PriorityBlockingQueue无法正确排序?

由于某种原因,当我添加到优先级队列时,它不能完全按字母顺序对字符串进行排序,也无法理解原因. 这是添加到PriorityBlockingQueue的代码: String toAdd = String.format("%s/%s", directory, s); outputData.add(toAdd); 但是我没有得到完全排序的输出(只有前几行,但是您可以看到

c-尝试使用该类的结构中的变量使自定义类的优先级队列

所以这是我的课程,目标是使bnode的优先级队列顺序排列,以使具有最低计数符号的bnode具有最高优先级.这是我的代码: struct symbol { explicit symbol(char av = 0, int ac = 0) : value(av), count(ac) { } char value; // actual symbol, by default 0 (empty) int co

Java:优先级队列产生奇怪的队列顺序

我编写了一个迷宫求解程序,该程序应该支持DFS,BFS,A *,Dijkstra和贪婪算法.无论如何,我选择了PriorityQueue作为我的边界数据结构,因为我认为优先级的行为就像队列,堆栈或优先级队列一样,取决于比较器的实现. 这是我实现比较器以将优先级队列转换为队列的方式: /由于优先级队列的“

c-如何更改std :: priority_queue top()的值?

当使用std :: priority_queue top()时,它返回一个常量引用.那么有没有办法我既可以利用std :: priority_queue并更改top()的值呢?解决方法:首先,我必须达到clarify关于关联容器的一点,但是现在我终于可以写出我对这个问题的答案了. @Xymostech的注释中已经概述了修改作为关联容器一

打印优先级队列的内容[java]

如何使print_queue在Java中正常工作?这是我自己的队列实现. 使用Iterator()可以正常工作,除了它会以随机顺序打印数字. package data_structures_java ; import java.util.Iterator; import java.util.PriorityQueue ; import java.util.* ; public class Queue_implementation {

c-如何有序遍历Boost.Heap优先级队列并更新给定元素?

我正在寻找一个可以保持其元素排序的良好数据结构.目前,我正在尝试Boost.Heap. 我经常需要按顺序遍历数据结构,并在基于某些属性到达元素时,更新其优先级. Boost.Heap优先级队列提供有序和无序迭代器.元素更新通过节点句柄进行,可以从普通的无序迭代器获得句柄,但不能直接从有序迭

c – 随机访问优先级队列

持续List to priority queue 我正在使用随机访问实现改进的priority_queue. template <class T, class Container = std::vector<T> > class Heap { public: Heap() {} Heap(const Container& container) { container_ = container; std::make_heap

简单的Java PriorityQueue错误

我所做的就是在Java PriorityQueue中添加三个字符串,然后将它们打印出来 这是我的代码: import java.util.*; import java.lang.*; class Main { public static void main (String[] args) throws java.lang.Exception { PriorityQueue<String> pq=new PriorityQu

c – STL堆栈和priority_queue的插入器

std :: vector,std :: list和std :: deque有std :: back_inserter,而std :: set有std :: inserter. 对于std :: stack和std :: priority_queue,我认为等效的插入器将是一个push(),但我似乎无法找到正确的函数来调用. 我的意图是能够使用以下函数和正确的插入迭代器: #include <stri

c – 如何告诉std :: priority_queue刷新它的顺序?

我有一个指向结构城市指针的优先级队列.我修改优先级队列外的这些指针指向的对象,并希望告诉优先级队列根据新值“重新排序”自己. 我该怎么办? 例: #include <iostream> #include <queue> using namespace std; struct city { int data; city *previous; }; struct Comp

c – 使用`std :: greater`通过`priority_queue`创建最小堆的原因

我想知道为什么使用priority_queue创建一个最小堆,应该使用std :: greater? std::priority_queue<T, std::vector<T>, std::greater<T> > min_heap; 对我来说,由于最小的值总是位于堆的顶部,因此使用的类应该是std :: less 更新: 另一方面,由于priority_queue(max heap)的默认行为

如何在方法调用之前将PriorityQueue恢复到其初始状态?

我正在做练习问题Practice IT Kth Smallest 这个问题基本上是你在PriorityQueue和某个k中传递的,你将返回该PriorityQueue中的第k个最小值.您还要将PriorityQueue还原到其初始状态,并可以使用一个堆栈或队列作为辅助数据结构. 我的更高级别的伪思想是因为PriorityQueue已经充当了一

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

这是直接来自Java Docs: This class and its iterator implement all of the optional methods of the Collection and Iterator interfaces. The Iterator provided in method iterator() is not guaranteed to traverse the elements of the priority queue in any particular o

java – 如何使用PriorityQueue?

如何让PriorityQueue对我想要的东西进行排序? 另外,offer和add方法之间有区别吗?解决方法:使用构造函数重载,它带有一个Comparator<?超级E>比较器并传入比较器,以适当的方式比较您的排序顺序.如果您举一个如何排序的示例,我们可以提供一些示例代码来实现比较器,如果您不确定的话. (虽

java – 添加到PriorityQueue的对象不按其优先级排序

我正在尝试使用PriorityQueue实现堆,如下所示: PriorityQueue<Node> heap = new PriorityQueue<Node>(); Set<String> allWords = codebook.getAllWords(); for(String word : allWords) { heap.add(new Node(word, codebook.getProbability(word))); System.out

c数据结构仍按值排序并运行FIFO

我正在寻找一种执行快速排序插入的数据结构,并基于FIFO进行操作. 我想要实现的是一个固定大小的数据结构来保存一系列值.在迭代的每个新步骤中,我希望能够有效地找到最小值或最大值(因此我希望数据结构始终被排序),并且在请求插入新元素时,最旧的元素将自动生成(或至少能够有效地)

java – 具有优先级和时间的多字段排序的队列

意图 实现具有基于1)优先级和2)时间的排序的任务队列,具体地,创建任务的时间或时间戳(未插入队列中),优先考虑具有较旧时间戳的任务. 试着 这是我到目前为止所得到的;比我想象的要简单得多,只需要一个PriorityQueue.在比较器中,如果两个优先级相等,则对Task.time进行另一次比较,否

java – Priority Queue poll()时间复杂度

鉴于以下代码: pq.offer(x); pq.poll(); 对于第一行代码,元素x被插入到优先级队列pq中,商品的时间复杂度是log(k),其中k是pq的大小. 那么我的问题是,对于紧跟在第一行之后的第二行代码,poll()的时间复杂度是多少? 在第一行提供之后,pq已经被排序了,所以poll只是检索并删除队列的头

java – 迭代时更新PriorityQueue

我需要根据ID更新PriorityQueue中的一些固定优先级元素.我认为这是一种非常常见的情况,这是一个示例代码段(Android 2.2): for (Entry e : mEntries) { if (e.getId().equals(someId)) { e.setData(newData); } } 然后我使Entry“不可变”(没有setter方法),以便创