|
|
Im Gegensatz zu den einfachen Sortierverfahren versucht Quicksort nicht eine gesamte Liste zu
sortieren, sondern viele kleine. Eine vollständige Traversierung ist so unter Umständen
gar nicht nötig. Man hat das Problem auf kleinere Probleme zurückgeführt. Die Strategie für diese
Vorgehensweise findet nicht nur in der Sortierung Verwendung. In der Fachsprache nennt man dies
divide and conquer bzw. teile und herrsche.
Der Code für den Quicksort gestaltet sich wie folgt.
01 def quicksort (feld): 02 _qsort (feld, 0, len(feld) -1) 03 return feld 04 05 def _qsort (feld): 06 07 L = Links 08 R = Rechts 09 if Links < Rechts : 10 pivot = feld [(Links+Rechts)/2] 11 12 while L <= R : 13 while feld [L] < pivot : L = L + 1 14 while feld [R] > pivot : R = R - 1 15 if L <= R: 16 17 feld [R], feld [L] = feld [L], feld [R] 17 L = L + 1 18 R = R - 1 20 21 _qsort (feld, Links, R) 22 _qsort (feld, L, Rechts) |