【发布时间】:2017-11-04 22:34:54
【问题描述】:
我有一个关于为 Dijkstra 算法实现优先级队列的问题,因为这是一个硬件,所以我无法创建另一个类,所以我试图找到一种在优先级队列中添加节点(整数)的方法,但我想要队列对节点内部的权重进行排序,而不是节点本身。
例如,我有 3 个节点(0,1,2),节点 0 的权重为 10,节点 1 的权重为 15,节点 2 的权重为 5。
Queue<Integer> queue = new PriorityQueue<Integer>();
queue.add(0);
queue.add(1);
queue.add(2);
while(!queue.isEmpty()){
System.out.println(queue.poll());
}
这应该给我 2,0,1 的输出。 在不创建另一个类的情况下这可能吗?或者除了优先级队列之外我可以使用其他方法吗?
先谢谢了!!!!!!任何帮助将不胜感激!
我能想到的一个解决方案是每次向其中添加节点时对普通队列进行排序,因此如果队列中有节点 2,0,1 并且我想添加权重为 8 的节点 3,我需要将权重与队列的顶部元素进行比较,直到它适合队列,因此队列中将是 2,3,0,1,但这有点低效。
【问题讨论】:
标签: java algorithm sorting priority-queue dijkstra