Der grundlegende Algorithmus | ||
Quicksort beruht auf einem Zerlegen (partitioning) einer Datei in zwei Teile und dem anschließenden Sortieren der Teile unabhängig von einander. Die genaue Position der Zerlegung hängt von der Datei ab, so daß der Algorithmus die folgende rekursive Struktur hat. |
Beispiel | |
Eine Reihe von Zahlen soll mit dieser Methode zerlegt werden. Das am weitesten rechts befindliche Element 5 wird als das zerlegende Element gewählt. Zuerst wird das Durchsuchen von links bei 18 unterbrochen, dann das Durchsuchen von rechts bei 1 (wie die zweite Zeile der Tabelle zeigt), und dann werden diese beiden Elemente vertauscht. Im nächsten Schritt wird das Durchsuchen von links bei 14 unterbrochen, dann das Durchsuchen von rechts bei 5 (wie die dritte Zeile der Tabelle zeigt), dann werden diese beiden Elemente vertauscht. Danach treffen sich die Zeiger. Das Durchsuchen von links wurde bei 17 unterbrochen und das Durchsuchen von rechts bei 5. Das rechts stehende 5 wird mit dem 17 vertauscht, wodurch die zerlegte Datei entsteht, die in der letzten Zeile der Tabelle gezeigt ist. |
1 | 18 | 14 | 17 | 19 | 8 | 13 | 6 | 5 | 20 | 1 | 12 | 15 | 11 | 5 |
1 | 18 | 1 | 12 | 15 | 11 | 5 | ||||||||
1 | 1 | 14 | 5 | 20 | 18 | 12 | 15 | 11 | 5 | |||||
1 | 1 | 5 | 17 | 19 | 8 | 13 | 6 | 14 | 20 | 18 | 12 | 15 | 11 | 5 |
1 | 1 | 5 | 5 | 19 | 8 | 13 | 6 | 14 | 20 | 18 | 12 | 15 | 11 | 17 |
Das Sortieren wird beendet, indem die beiden Teildateien auf jeder Seite des zerlegenden Elements sortiert werden (rekursiv). Das folgende Programm stellt eine vollständige Implementation dieser Methode dar. |
Beispiel | |
In diesem Beispiel werden beide Teildateien rekursiv sortiert, womit das Sortieren beendet wird. Jede Zeile zeigt das Ergebnis der Zerlegung der dargestellten Teildateien unter Benutzung des zerlegenden Elementes. |
1 | 1 | 5 | 5 | 19 | 8 | 13 | 6 | 14 | 20 | 18 | 12 | 15 | 11 | 17 |
1 | 1 | 5 | ||||||||||||
1 | 1 | |||||||||||||
11 | 8 | 13 | 6 | 14 | 15 | 12 | 17 | 20 | 19 | 18 | ||||
11 | 8 | 6 | 12 | 14 | 15 | 13 | ||||||||
6 | 8 | 11 | ||||||||||||
8 | 11 | |||||||||||||
13 | 15 | 14 | ||||||||||||
14 | 15 | |||||||||||||
18 | 19 | 20 | ||||||||||||
19 | 20 |
Das Programm hat aber störende Eigenschaft. Mehr darüber...
|