Laufzeit von QuickSort

Hallo,

habe schon wieder eine Frage…

Ich beschäftige mit etwas mit Sortieralgorithmen und bin jetzt bei Quicksort angekommen.

Die Wortcase Laufzeit ist mit O(n^2) angegeben. Wenn ich das richtig verstehe passiert das z. B. dann, wenn ich als Pivotelement bzw. Wert das erste Element wähle und die Liste absteigend sortiert ist.

So wie ich das sehe, kann ich dem doch vorbeugen indem ich vor dem Sortieren für jede (Teil-)Liste den Median ermittel und dann mit diesem Wert bzw. diesem Element als Pivotelement arbeite.

Oder würde sich dadurch die durchschnittliche Laufzeit so stark verschlechtern, dass sich das nicht lohnt?

Grüße

powerblue

Hallo.

Die Wortcase Laufzeit ist mit O(n^2) angegeben. Wenn ich das
richtig verstehe passiert das z. B. dann, wenn ich als
Pivotelement bzw. Wert das erste Element wähle und die Liste
absteigend sortiert ist.

So wie ich das sehe, kann ich dem doch vorbeugen indem ich vor
dem Sortieren für jede (Teil-)Liste den Median ermittel und
dann mit diesem Wert bzw. diesem Element als Pivotelement
arbeite.

In dem Fall muss man die Laufzeit zur Berechnung des Median für jede Teilliste mit einrechnen.

Oder würde sich dadurch die durchschnittliche Laufzeit so
stark verschlechtern, dass sich das nicht lohnt?

Wenn ich mich nicht ganz irre, gibt es Median-Algorithmen, die O(n) Laufzeit benötigen. Man muss aber nun nicht nur einen Median berechnen, sondern für jede Teilliste. Im worst case bekommt man insgesamt n Teillisten, somit wäre das ebenfalls O(n^2) insgesamt.
Die Laufzeit würde dadurch also nicht verbessert.

Als Möglichkeiten für die Pivot-Wahl kenne ich eigentlich folgende:

  • Immer 1. Element (gibt Worstcase-Laufzeit auf sortierten Listen)
  • Immer Element mit mittlerem Index
  • Median aus 1., letzetem und mittlerem Element (die Berechnung hat dann konstante Laufzeit, da Median aus 3 Elementen)
  • zufällige Wahl des Pivotelements

Der Worst case O(n^2) kann in jedem der Fälle eintreten. Im 4. Fall ist die zugrunde liegende Liste egal, da hängt der worst case rein vom Zufall ab. Bei den 1. drei Fällen hängt es davon ab, wie die Liste vorher sortiert war.

Sebastian.

Hi Sebiastian,

danke für die Antwort.

Simmt, das hatte ich nicht bedacht.

Habe mich auch schon über die Methode, den Median aus 3 oder 5 Elementen zu rechnen, gewundert. Aber daruch bleibt es ja noch linear.

Grüße

powerblue