Beseitigung der Rekursion | ||
Quicksort-Programm kann auch ohne Rekursion verwendet werden. Wir beseitigen die Rekursion, in dem wir einen expliziten Stapel verwenden, der so vorzustellen ist, daß er die "zu erledigende Arbeit" in Form von zu sortierenden Teildateien enthält. Jedesmal, wenn eine Teildatei zum Bearbeiten benötigt wird, entnehmen wir sie dem Stapel. Wenn wir zerlegen, erzeugen wir zwei zu bearbeitende Teildateien, die im Stapel abgelegt werden können. So können wir nichtrekursive Implementation von Quicksort schreiben. |
Beispiel | |
Folgendes Bild zeigt die Zerlegung für unser Beispiel. Die ersten drei Zerlegungen sind die gleichen, doch dann zerlegt die nichtrekursive Methode zuerst die rechte Teildatei von 17, da sie kleiner ist als die linke usw. |
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 | ||||
18 | 19 | 20 | ||||||||||||
19 | 20 | |||||||||||||
11 | 8 | 6 | 12 | 14 | 15 | 13 | ||||||||
6 | 8 | 11 | ||||||||||||
8 | 11 | |||||||||||||
13 | 15 | 14 | ||||||||||||
14 | 15 |