0

一个小问题,但我找不到关于如何实现我正在尝试的东西的好解释。我正在尝试实现Dijkstra 算法。我需要使用PriorityQueue

我想根据距离比较图的不同顶点。但是我真的不知道如何编写这样的比较方法,因为我从未使用过PriorityQueue.

4

2 回答 2

0

优先级队列的全部意义在于它将最小的元素保持在顶部。您可以使用该函数检索此顶部元素,也可以使用该peek()函数检索它并将其从队列中删除pop()

因此,对于 Dijkstra 算法,您应该将所有顶点放入队列中,然后在每一步弹出具有最小距离的顶点,然后更新与队列中相邻节点的距离。

于 2012-12-02T01:39:41.150 回答
0

至于 CompareTo 函数:

public class Example implements Comparable<Example> {

    private String test;

    public String getTest() {
        return test;
    }

    public void setTest(String test) {
        this.test = test;
    }
    @Override
    public int compareTo(Example o) {
        return this.test.compareTo(o.test);
    }

}
于 2012-12-02T01:45:04.027 回答