Checkmark on Circle.png

Quicksort

Aus KGS-Wiki

Quicksort ist ein Sortieralgorithmus, der nach dem Prinzip Divide and Conquer arbeitet; und zwar wie folgt:

Gegeben: Liste A der Länge n.

  • Falls n < 2: A ist sortiert, brich ab. Ansonsten…
  • Wähle ein Element aus der Liste, das so genannte Pivot-Element
  • Teile die Liste in zwei Haufen. Auf einen Haufen kommen die Elemente, die kleiner sind als das Pivot-Element, auf den anderen Haufen die Elemente, die größer sind.
  • Sortiere beide Haufen mit Quicksort; du erhältst zwei sortierte Listen
  • Füge die beiden sortierten Teillisten mit dem Pivot-Element zu einer sortierten Gesamtliste zusammen.

Laufzeit

Um die Liste in zwei Haufen zu unterteilen, muss man alle n Elemente betrachten, ist also in . Das Zusammenfügen am Ende hat eine Laufzeit, die nicht von der Länge der Eingabeliste abhängt, ist also in . Die Frage ist nun, wie oft die Liste unterteilt werden muss.

Worst Case

Im schlechtesten Fall wählt man das Pivot-Element so ungeschickt, dass der gesamte Rest der Liste immer auf einem Haufen landet. Dies ist der Fall, wenn man als Pivot-Element das größte oder das kleinste Element der Liste wählt. In diesem Fall muss die Liste n-1 Mal in Haufen unterteilt werden, es ergibt sich eine Laufzeit in .

Best Case

Im besten Fall wählt man das Pivot-Element so geschickt, dass man die Liste immer in zwei exakt gleich große Haufen teilt. Dann muss die Liste etwa Mal in Haufen unterteilt werden; es ergibt sich eine Laufzeit in .

Weblinks