Hallo,
also ich verstehe nicht genau wie das ganze Split/Merge verfahren funktionieren soll. Wir lesen wikipedia natürlich durch, vorallem die bilder gucken wir uns an, denn die sind toll (http://de.wikipedia.org/wiki/Mergesort)
Im grunde weiß ich nur dass zuerst alles in 2 hälften aufgeteilt wird und dann immer weiter kleiner und kleiner zerlegt wird.
Wie soll ich das verstehen? Am anfang mache ich 2 listen und dann 4 und dann 8?!
Dannach werden die aufgesplitteten teile wieder zusammengelegt... und dann im letzten schritt gibt es wieder nur zwei listen und die werden zusammensortiert und wir haben die sortierte liste. Da ist auch die frage, wie genau werden die zusammen gelegt...?
Also im grunde konnte ich nur den aller letzten schritt coden. Also wenn man nur noch 2 listen hat, daraus macht man dann eine fertige:
Gut das klappt auch natürlich
Aber das ist eigentlich nur das aller kleinste teil...
Jemand noch irgendwelche tips zum MergeSorte? Oder zum code, da ich sicher bin, dass es auch schöner zu coden geht, vorallem wenn man mit listen arbeiten möchte - bin halt noch nicht so fitt in java(aber das sieht man denke ich ^^)
Danke
also ich verstehe nicht genau wie das ganze Split/Merge verfahren funktionieren soll. Wir lesen wikipedia natürlich durch, vorallem die bilder gucken wir uns an, denn die sind toll (http://de.wikipedia.org/wiki/Mergesort)
Im grunde weiß ich nur dass zuerst alles in 2 hälften aufgeteilt wird und dann immer weiter kleiner und kleiner zerlegt wird.
Wie soll ich das verstehen? Am anfang mache ich 2 listen und dann 4 und dann 8?!
Dannach werden die aufgesplitteten teile wieder zusammengelegt... und dann im letzten schritt gibt es wieder nur zwei listen und die werden zusammensortiert und wir haben die sortierte liste. Da ist auch die frage, wie genau werden die zusammen gelegt...?
Also im grunde konnte ich nur den aller letzten schritt coden. Also wenn man nur noch 2 listen hat, daraus macht man dann eine fertige:
PHP:
public static void mergeSort() {
int[] daten = {1,5,8,2,3,9}; //das hier soll sortiert werden
int laenge = daten.length; //größe der zu sortierende liste
int speicher; int mitte = 0; int i = 0; int j = 0; int k = 0;
mitte = daten.length/2;
int[] liste1 = new int[mitte];
int[] liste2 = new int[mitte];
int[] sortiert = new int[laenge-1];//später soll hier die sortierte liste drinne sein
//Teile die unsortierte Liste in 2 Listen auf
while(i < mitte) {
liste1[i] = daten[i];
i++;
}
i = mitte; j = 0;
while(i < (laenge)) {
liste2[j] = daten[i];
i++;
j++;
}
System.out.println("Liste1: "+ toString(liste1));
System.out.println("Liste2: "+ toString(liste2));
//Sortiere die zwei unsortierten Listen
i = 0; j = 0;
while(i < mitte) {
if(liste1[i] < liste2[j]) {
sortiert[k] = liste1[i];
i++;
}
else if(liste1[i] > liste2[j]) {
sortiert[k] = liste2[j];
j++;
}
k++;
}
System.out.println("Sortiert: "+ toString(sortiert));
}
Gut das klappt auch natürlich

Jemand noch irgendwelche tips zum MergeSorte? Oder zum code, da ich sicher bin, dass es auch schöner zu coden geht, vorallem wenn man mit listen arbeiten möchte - bin halt noch nicht so fitt in java(aber das sieht man denke ich ^^)
Danke