Quicksort

Ruderer1993

Aktives Mitglied
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 !

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; //
}
 

darekkay

Bekanntes Mitglied
Java:
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 ?

Was würde beim Aufruf quicksort(5,3) oder quicksort(1,1) passieren? Diese Fälle fängt man hiermit ab ;)
 

timbeau

Gesperrter Benutzer
Es sieht nicht schlecht aus. Was ich immer sehr hilfreich fand an der Uni, waren viele Ausgaben. Wo sind die Indizes gerade, was wird getauscht usw.

Klar, man kann auch alles debuggen aber mit ein paar guten sysouts wird vieles klarer.
 

Neue Themen


Oben