Datenstrukturen und Algorithmen

In welchem typischen Fall benötigt Quicksort O(n²) Zeit?

  1. ADie Daten liegen in zufälliger Reihenfolge vor, und das Pivotelement (der Vergleichswert) wird zufällig gewählt
  2. BDie Zahl der Datenelemente ist eine Zweierpotenz
  3. CDie Daten sind bereits sortiert, und als Pivotelement wird immer das erste Element verwendet
Antwort und Erläuterung anzeigen

Antwort: C. Die Daten sind bereits sortiert, und als Pivotelement wird immer das erste Element verwendet

Quicksort teilt die Elemente in solche, die kleiner, und solche, die größer als das Pivotelement sind, und teilt jeden Teil erneut. Sind die Daten bereits sortiert und ist das erste Element immer das Pivotelement, ist es jedes Mal das Minimum, und jede Teilung ist einseitig, mit null Elementen auf der einen und allen übrigen auf der anderen Seite; so entstehen n(n−1)/2 Vergleiche (4950 bei n = 100). Wählt man das Pivotelement zufällig oder als Median aus drei Werten, wird eine lange Folge einseitiger Teilungen äußerst unwahrscheinlich. Die Zahl der Elemente spielt dabei keine Rolle.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Datenstrukturen und Algorithmen

  1. Bei Mergesort werden die beiden sortierten Folgen 1, 4, 7, 9 und 2, 3, 8, 10 zu einer zusammengeführt (Merge), indem wiederholt die vordersten Elemente verglichen und das kleinere ausgegeben wird. Ist eine Folge leer, wird der Rest der anderen ohne Vergleich ausgegeben. Wie viele Vergleiche werden durchgeführt?
  2. Ein binärer Heap wird mit der Wurzel in a[0] in einem Array a[0], a[1], a[2], … gespeichert, wobei jede Ebene von oben beginnend von links nach rechts aufgefüllt wird. Welches sind die Kinder und der Elternknoten von a[4]?
  3. Ein Max-Heap, in dem der Wert jedes Elternknotens mindestens so groß ist wie die Werte seiner Kinder, wird in einem Array mit der Wurzel in a[0] gespeichert. Zum Heap 50, 30, 40, 10, 20, 35 wird 45 hinzugefügt, indem es ans Ende gesetzt und dann mit seinem Elternknoten vertauscht wird, solange es größer als dieser ist. Wie sieht das resultierende Array aus?
  4. Wie sind die Werte der besuchten Knoten angeordnet, wenn ein binärer Suchbaum in In-Order (symmetrische Reihenfolge: erst der linke Teilbaum, dann der Knoten, dann der rechte Teilbaum) durchlaufen wird? Alle Werte seien verschieden.
  5. Die Werte 50, 30, 70, 20, 40, 60, 80 werden in dieser Reihenfolge in einen leeren binären Suchbaum eingefügt. In welcher Reihenfolge werden die Knoten besucht, wenn der Baum in Post-Order (erst der linke Teilbaum, dann der rechte Teilbaum, dann der Knoten) durchlaufen wird?