Hallo, ich sitze immernoch an derselben Aufgabe aus diesem Thread:
http://www.java-forum.org/java-basics-anfaenger-themen/85200-adjazenzliste-leer.html
Habe jetzt aber ein Problem mit dem Ordnen des Feldes, in dem die Namen der Orte, 11 Stück, stehen. Das Einlesen-Problem habe ich gelöst, wobei das Feld schon von anfang an kein Problem war. Ich sehe aber bei meinem Quelltext keine Fehler. Feld sieht gefüllt so aus:
Dresden Riesa Döbeln Chemnitz Flöha Olbernhau Bärenstein Aue Schwarzenberg Johangeorgenstadt Zwickau
Meine MergeSort Methoden sind folgende:
aufgerufen durch:
Beim Debuggen tritt schon der erste fehler auf, und zwar das anz nur 2 ist. Aber dies müsste doch eigentlich 12 sein, damit auch temp voll gefüllt werden kann!? Und wenn ich diese Länge manuell einsetze funktioniert das ganze zwar reibungslos aber die Ausgabe ist natürlich total falsch:
null
Dresden
null
null
Dresden
null
null
null
null
null
null
null
null
Chemnitz
Dresden
Flöha
null
null
null
null
null
mfg und danke schonmal
http://www.java-forum.org/java-basics-anfaenger-themen/85200-adjazenzliste-leer.html
Habe jetzt aber ein Problem mit dem Ordnen des Feldes, in dem die Namen der Orte, 11 Stück, stehen. Das Einlesen-Problem habe ich gelöst, wobei das Feld schon von anfang an kein Problem war. Ich sehe aber bei meinem Quelltext keine Fehler. Feld sieht gefüllt so aus:
Dresden Riesa Döbeln Chemnitz Flöha Olbernhau Bärenstein Aue Schwarzenberg Johangeorgenstadt Zwickau
Meine MergeSort Methoden sind folgende:
Java:
public void mergeSort (Knoten[] staedte, int start, int ende) {
int mitte;
if (start < ende) {
mitte = (start + ende) / 2;
mergeSort(staedte, start, mitte);
mergeSort(staedte, mitte+1, ende);
merge(staedte, start, mitte+1, ende);
}
}
public void merge (Knoten[] staedte, int linksPos, int rechtsPos, int rechtsEnde) {
int linksEnde = rechtsPos - 1;
int help = linksPos;
int anz = rechtsEnde - linksPos + 1;
int i;
temp = new String[anz];
while (linksPos <= linksEnde && rechtsPos <= rechtsEnde) {
if (staedte[linksPos].getStadtname().compareTo(staedte[rechtsPos].getStadtname()) <= 0) {
temp[help] = staedte[linksPos].getStadtname();
linksPos++;
help++;
}
else {
temp[help] = staedte[rechtsPos].getStadtname();
rechtsPos++;
help++;
}
}
while (linksPos <= linksEnde) {
temp[help] = staedte[linksPos].getStadtname();
linksPos++;
help++;
}
while (rechtsPos <= rechtsEnde) {
temp[help] = staedte[rechtsPos].getStadtname();
rechtsPos++;
help++;
}
for (i = 0; i < anz; i++) {
System.out.println(temp[i]);
}
}
aufgerufen durch:
Java:
mergeSort(staedte, 0, staedte.length-1);
Beim Debuggen tritt schon der erste fehler auf, und zwar das anz nur 2 ist. Aber dies müsste doch eigentlich 12 sein, damit auch temp voll gefüllt werden kann!? Und wenn ich diese Länge manuell einsetze funktioniert das ganze zwar reibungslos aber die Ausgabe ist natürlich total falsch:
null
Dresden
null
null
Dresden
null
null
null
null
null
null
null
null
Chemnitz
Dresden
Flöha
null
null
null
null
null
mfg und danke schonmal
Zuletzt bearbeitet: