(if (empty? l)
empty
(append
(my-quicksort (filter (lambda (x) (<= x (first l))) (rest l)))
(list (first l))
(my-quicksort (filter (lambda (x) (> x (first l))) (rest l)))
)
)
)
Aufruf z.B. mit
produziert
Aufruf z.B. mit
produziert
Mit Quicksort kann man sehr schnell und Ressourcen sparend sortieren. Den Algorithmus gibt es bereits seit 1960!
Vorgehensweise am Beispiel einer Liste mit Zahlen:
Zuerst wählt man ein zufälliges Pivot-Element (Drehpunktelement). Danach sortiert man die verbleibenden Elemente in 2 Listen, in der Ersten sind alle Elemente die kleiner oder gleich dem Pivot-Element sind, in der Zweiten alle die größer oder gleich sind. Das Pivot-Element merkt man sich – man kann es jetzt bereits als Fertig markieren – und wendet das gleiche Verfahren auf die beiden kleineren Listen an.
Pseudocode und weitere Beispiele: siehe Wikipedia.