如何使用java内置的优先级队列来读入和排序图的顶点,最终在每次迭代中删除最小边?Java优先级队列
0
A
回答
0
首先,创建为优先级队列比较:
class MinHeapComparator implements Comparator<Integer> {
@Override
public int compare(Integer one, Integer two) {
return mDistances[one] - mDistances[two];//...
}
}
这是最短路径算法我写的。 mDistances是从源到顶点的距离。你可以修改比较器来比较你喜欢的方式。
从比较器的文档:“比较它的两个参数的顺序。返回一个负整数,零或一个正整数,因为第一个参数小于,等于或大于第二个参数。
完整的文档在这里:http://download.oracle.com/javase/1.5.0/docs/api/java/util/Comparator.html
二,项目添加到优先级队列。我通常使用包含顶点对象的数组构建一个图形,每个对象都包含其相邻顶点的列表。所以在我的情况下,我只是将索引添加到优先级队列来表示顶点。然后比较器可以包含逻辑来处理顶点。 PriorityQueue.add()添加项目。
第三,实例化优先队列与比较:
PriorityQueue<Integer> minHeap = new PriorityQueue<Integer>(numberItems, new MinHeapComparator());
第四,调用PriorityQueue.poll()以提取关于堆顶部的项目。您的比较器用于确定堆顶部的项目。
相关问题
- 1. java优先级队列队列适应
- 2. 优先级队列中的优先级
- 3. 优先级队列
- 4. Java链接列表优先级队列
- 5. 比较JAVA中的优先级队列
- 6. Java中的优先级队列
- 7. 实现Java的优先级队列
- 8. Java优先级队列接口实现
- 9. 优先级队列,可比
- 10. 优先级队列C
- 11. 双重优先级队列
- 12. 优先级队列VS队列
- 13. Java中的优先队列?
- 14. Java中的优先队列
- 15. 新近度是次要优先级的优先级队列?
- 16. 具有动态项目优先级的优先级队列
- 17. 优先级队列的优先级总是需要是整数?
- 18. 如何在JAVA中创建高优先级有界子队列和低优先级有界子队列
- 19. 使用优先级队列结构吗?
- 20. 创建一个python优先级队列
- 21. 更改Minix3的优先级队列
- 22. 不符合QoS优先级的队列
- 23. 堆优先级队列实现
- 24. 优先级队列数据结构
- 25. 优先级队列随机访问
- 26. 优先级队列 - 二进制堆
- 27. 节点的优先级队列
- 28. Laravel队列优先级和保留
- 29. 比较和优先级队列
- 30. STL优先级队列 - 删除项目
SO上的通常程序是显示您尝试过的内容,并询问您不明白的某个具体问题。尝试发布一些代码以显示迄今为止所做的工作。否则,你会得到积极评价,问题可能会被视为“不是真正的问题”。 – 2011-04-11 03:28:04