Hier noch ein weiterer Pseudocode, mit zwei aufeinanderfolgenden Schleifen. Er ist zwar fast immer deutlich langsamer, kann in Sonderfällen aber auch deutlich schneller arbeiten. Schneller insbesondere dann, wenn es viele Elemente gibt, die jeweils mehrfach vorhanden sind. Das normale Quicksort würde bei den Zahlen 4,8,4,1,4,7,4,3,4 nach der Teilung das Ergebnis 3,1,4,8,4,7,4,4,4 liefern und von Element 1 bis 2 die nächste linke und von Element 4 bis 9 die nächste rechte Rekursion starten. Der folgende Pseudocode liefert hingegen das Ergebnis 1,3,4,4,4,4,4,8,7 und startet ebenfalls Element 1 bis 2 als die nächste linke, aber nur Element 8 bis 9 als die nächste rechte Rekursion. funktion quicksort(links, rechts) s := links - 1 pivot := daten[links + Int[[rechts - links + 1] / 2]] // Nach Elementen kleiner als Pivot suchen schleife "x" von links bis rechts falls daten[x] < pivot dann s := s + 1 tausche daten[s] mit daten[x] ende ende // Nach Elementen identisch mit Pivot suchen b := s + 1 schleife "x" von s + 1 bis rechts falls daten[x] = pivot dann tausche daten[b] mit daten[x] b := b + 1 ende ende // Wenn zutreffend, die Rekursion "kleiner als..." starten falls links < s dann starte funktion quicksort(links, s) ende // Wenn zutreffend, die Rekursion "größer als..." starten falls b < rechts dann starte funktion quicksort(b, rechts) ende ende -- 16:14, 18. Apr. 2022 (CEST)