Dijkstra Algorithmus implementieren, Priority Queue nach den geringsten Kosten in der Queue sortieren?

1 Antwort

Eine PriorityQueue ist eigentlich von sich aus bereits sortiert, und nicht einfach eine Sammlung von gewichteten Objekten. Die Sortierung kann beim Einfügen oder auch beim Auslesen passieren.

Ist das deine eigene PriorityQueue-Klasse oder woher kommt die? Wenn es die aus dem JDK ist, solltest du dir die Javadocs anschauen. Man kann im Konstruktor einen Comparator angeben, wenn einem die natürliche Ordnung nicht gefällt. Ansonsten könntest du deine Nodes auch Comparable implementieren lassen.

Woher ich das weiß:Studium / Ausbildung – Informatikstudent

Niinbo 
Beitragsersteller
 16.06.2024, 13:07

und die PriorityQueue ist aus der JDK

0
Niinbo 
Beitragsersteller
 16.06.2024, 12:54
@Override
 public int compareTo(Node o) {
    return Integer.compare(this.cost, o.cost);

}

das ist in der Node Klasse drin

0
Seliba  16.06.2024, 13:22
@Niinbo

Dann verstehe ich das Problem aber nicht. Die PriorityQueue ist sortiert, und du bekommst das niederwertigste Element mit PriorityQueue#poll() (oder PriorityQueue#peek(), wenn du es nicht automatisch entfernen möchtest). Das steht alles in den oben verlinkten Javadocs

0
Niinbo 
Beitragsersteller
 16.06.2024, 17:54
@Seliba

ich wusste nicht genau woher die queue wissen will, ob ich eine ascending order oder descending order haben will..., naja ich bin jz so mehr oder weniger damit durch , hab nen großteil fertig, aber es gab da ne winzige sache der nen fehler verursacht, hab ich zum teil gefunden aber nicht die lösung dazu... naja ist jz abgegeben die HA

0
Seliba  16.06.2024, 17:57
@Niinbo

Das weiß sie, weil die Elemente (Node) Comparable#compareTo() implementiert. Darüber ist die Reihenfolge festgelegt

0