Hey ich schreibe morgen eine Klausur über Sortieralgorithmen. Ich denke ich kann soweit alles und kann auch Quicksort, SelectionSort etc in Java implementieren und habe auch verstanden wie diese funktionieren.
Mein Lehrer nimmt gerne solche Aufgaben, in denen man den Code Zeile für Zeile erklären muss...
Nun ja ich habe jetzt hier mal die Methode des Quicksort Algorithmus... ich versuche einfach mal meine Erklärung zu geben, und würde mich sehr freuen wenn ihr mir sagt ob das soweit richtig ist, oder nicht, bzw was noch fehlt.
Danke !
Mein Lehrer nimmt gerne solche Aufgaben, in denen man den Code Zeile für Zeile erklären muss...
Nun ja ich habe jetzt hier mal die Methode des Quicksort Algorithmus... ich versuche einfach mal meine Erklärung zu geben, und würde mich sehr freuen wenn ihr mir sagt ob das soweit richtig ist, oder nicht, bzw was noch fehlt.
Danke !
Java:
public void quicksort(int start, int end) { //Methode mit den Übergabeparamatern start und end
int i = start; //Laufvariablen erhalten die Werte der Übergabeparameter
int k = end;
if(end - start >=1) {//HIER bin ich mir unsicher, wieso macht man diese Abfrage ? will man prüfen ob das Array nicht nur aus 1 Zahl besteht ?
int pivot = zahl[start]; // Die erste Zahl im Array wird als Pivot festgelegt
while (k>i) { //Solange die Indexe noch nicht aneinander vorbeigelaufen sind
while(zahl[i]<=pivot && i<=end && k>i) { // such solange bis du eine Zahl gefunden hast die kleiner ist als das Pivotelement, Gehe dabei alle Zahlen durch bis du eine kleinere Zahl gefunden hast
i++;
}
while(zahl[k]>pivot && k>=start && k>=i) { //Wenn du eine kleinere Zahl gefunden hast dann suche von der "rechten" Seite aus nach einer größeren Zahl
k--;
}
if(k>i) { //Falls i und k aneinenander vorbei sind tausche die beiden
tauschen(i,k);
}
}
tauschen(start,k); //tausche start mit k => bewirkt das beim nächsten Durchlauf das Pivotelement neben den zwei Teillisten ist nämlich bei k
quicksort(start,k-1); //sortiere Teilliste 1
quicksort(k+1,end); // und Teilliste 2
}
else return; //
}