|
Hauptseite - Welches System? - Hardware - Software - Emulatoren - |
Internet MausNet Programmieren Verweise Über |
Quicksort wurde 1960 von Tony Hoare (C.A.R. Hoare) erfunden und ist der schnellste bekannte Sortieralgorithmus. Bei ungünstiger Sortierung der Daten hat er allerdings ein schlechtes Laufzeitverhalten. Mit einigen Verbesserungen zeigt er aber, daß bessere Algorithmen schneller als ausgefeilte Programme sind. Da Quicksort recht trickreich ist, besteht die Gefahr, bei einer Implementierung Fehler bei den Indexwerten einzubauen. Quicksort läßt sich rekursiv wie folgt beschreiben:
Die Kunst besteht nun darin, ein geeignetes Element für die Aufteilung des Feldes in zwei Teilfelder zu finden. Eine mögliche Aufteilung des Feldes kann wie folgt durchgeführt werden:
Dazu ein Beipiel mit folgenden unsortierten Feld:
5 | 1 | 2 | 4 | 3 |
Wir merken uns das letzte Element 3 und fangen vorn mit der 5 und hinten mit der 4 an. Da 5 größer als 3 ist, haben wir von vorn das zu vertauschende Element gefunden. 4 ist größer als 3, also gehen wir von hinten ein Element weiter. 2 ist kleiner als 3, wir vertauschen 5 und 2.
2 | 1 | 5 | 4 | 3 |
Wenn wir jetzt weitersuchen, würde das nächste Element von vorn und das nächste Element von hinten die 1 sein, wir können also das Vertauschen beenden und müssen nur noch die 3 einsetzen. Da 3 größer als die 1 (und auch alle davor stehenden Element) ist, aber kleiner als dio 5, wird es mit der 5 vertauscht.
2 | 1 | 3 | 4 | 5 |
Jetzt müssen nur noch die beiden Teilfelder sortiert werden:
2 | 1 |
und
4 | 5 |
Zusätzlich zu dem rekursiven Beispiel gibt es noch eine iterative Lösung, die die Rekursion mit Hilfe eines Stack auflöst. Das dritte Beispiel benutzt für kürzere Teillisten Insertsort.
Beispielcode (rekursiv) Beispielcode (iterativ) Beispielcode (eingelagertes Insertsort)
English version not yet available. |