HI, ich habe vor mir einen Mergesort liegen und muss es kommentieren.
Das habe ich gemacht. Aber bei manchen Methoden verstehe ich es einfach nicht. Hier erstmal der Code.
Hoffe das ist nicht zu lang.
Also ich habe die Methode "mischen" zwar kommentiert, weiß aber nicht wirklich wie es geht.
Und die Methode "zerlegen" habe ich auch nicht verstanden.
Es wäre echt eine riesen Hilfe, wenn sich jemand kurz Zeit nimmt und es mir kurz erklärt. Das wäre mega.
Das habe ich gemacht. Aber bei manchen Methoden verstehe ich es einfach nicht. Hier erstmal der Code.
Code:
public class algo1 {
private int[] array1;
private int[] array2;
private int lange;
public static int[] Zahlen;
public static double summe;
public void zerlegen(int inputArray[]) {
this.array1 = inputArray;
this.lange = inputArray.length;
this.array2 = new int[lange];
mergesort(0, lange - 1); //methode mergesort
}
private void mergesort(int links, int rechts) {
if (links < rechts) {
//sortiert links bis rechts, wenn es mehr als 1 element hat
int mitte = (links + rechts) / 2;
// zerlegt die Arrays in 2 hälften
mergesort(links, mitte);
// linke Hälfte sortieren
mergesort(mitte + 1, rechts);
//rechte Hälfte sortiren
mischen(links, mitte, rechts);
//alles zusammen mischen
}
}
private void mischen(int links, int mitte, int rechts) {
//methode mischt alle arrays
for (int i = links; i <= rechts; i++) {
//solange rechts größer/gleich links -->links erhöhen
array2[i] = array1[i];
}
int i = links; //i durchläuft von links bis mid
int j = mitte + 1; //j durchläuft von mid bis rechts
int k = links; //k durchläuft von links nach rechts
while (i <= mitte && j <= rechts) {
//solange keine der beiden Arrays ganz durchlaufen sind
if (array2[i] <= array2[j]) {
array1[k] = array2[i];
i++;
} else {
array1[k] = array2[j];
j++;
}
k++;
}
while (i <= mitte) {
//Rest von links wird durchlaufen
array1[k] = array2[i];
k++;
i++;
}
}
}
public static void main(String a[]) throws Exception{
setUp();
algo1 neuearray = new algo1();
neuearray.zerlegen(Zahlen);
//Array mit Zahlen erstellen
for(int i:Zahlen){
System.out.print(i);
System.out.print(" ");
}
}
public static void setUp() throws Exception{
File Text.txt = new File ("D:/Users/or/workspace/aab/src/abc/Text.txt");
Zahlen = zahlenleser.FileToIntArray(Text.txt);
Hoffe das ist nicht zu lang.
Also ich habe die Methode "mischen" zwar kommentiert, weiß aber nicht wirklich wie es geht.
Und die Methode "zerlegen" habe ich auch nicht verstanden.
Es wäre echt eine riesen Hilfe, wenn sich jemand kurz Zeit nimmt und es mir kurz erklärt. Das wäre mega.