Untere Schranke Vergleichssortierung

Intermediate Algorithmen und Datenstrukturen Deutsch
Also available: English
Created by Best · 16.08.2026 at 09:13 UTC

Jeder vergleichsbasierte Sortierer braucht im Worst Case mindestens logarithmisch viele Vergleiche relativ zu n!: der Entscheidungsbaum hat n! Blätter, seine Höhe ist also durch log2(n!) nach unten beschränkt.

Counting/Radix Sort umgehen das, indem sie mehr als Vergleiche nutzen (bei eingeschränkten Schlüsseluniversen).

n n!
3 6
4 24
5 120
## Wo gebraucht

Begründet, warum reine Vergleichssortierung im Worst Case nicht beliebig unter die informations-theoretische Schranke sinken kann. Öffnet die Tür zu Counting/Radix, wenn das Universum der Keys es erlaubt.

Vertiefung

Eine Vergleichssortierung kann als Entscheidungsbaum modelliert werden. Jeder Vergleich hat mögliche Ausgänge und teilt die noch möglichen Eingabereihenfolgen. Für n verschiedene Schlüssel muss der Baum mindestens n Fakultät verschiedene Reihenfolgen unterscheiden können.

Ein binärer Baum mit Höhe h besitzt höchstens 2 hoch h Blätter. Daraus folgt, dass die Höhe mindestens logarithmisch in n Fakultät wächst, was asymptotisch n mal log n entspricht. Die Aussage betrifft allgemeine Sortierer, die Informationen ausschliesslich aus Vergleichen gewinnen.

Schwierigkeitsstufen

  1. Vergleiche als Verzweigungen eines Entscheidungsbaums deuten.
  2. Blattzahl mit der Zahl möglicher Permutationen verbinden.
  3. Erklären, warum Counting Sort nicht unter dieselbe Voraussetzung fällt.

Fallstricke

Die Schranke sagt nichts darüber, dass jeder konkrete Input gleich viele Vergleiche braucht. Sie gilt für den ungünstigsten Fall des Modells und kann durch zusätzliche Struktur der Schlüssel umgangen werden.

University approvals: 0
Tasks
Question 1

Untere Schranke für vergleichsbasiertes Sortieren:

Question 2

Warum gilt die Entscheidungsbaumargumentation nicht direkt für Counting Sort?

Question 3

Implementiere unsortedness als Anzahl der Inversionen im Array.

Hint

Verschachtelte for-Schleifen dürfen die Indizes i und j nutzen. Der Rückgabewert und damit der Zähler haben hier den Typ int.

Starter code is prefilled; replace TODO blocks with your solution.
1 test case will be used for grading
Run checks runtime behavior only. Final correctness is evaluated when you submit.
Card Info
  • Topic: Algorithmen und Datenstrukturen
  • Difficulty: Intermediate
  • Completed: 0 users
Creator
Best
Best
BestBuddy