Hauptinhalt
Kurs: Informatik > Lerneinheit 1
Lektion 8: MergesortTeile-und-herrsche-Algorithmen
Die beiden Sortieralgorithmen, die wir bisher angeschaut haben, Auswahl sortieren und Insertionsort, haben Worst-Case-Laufzeiten von . Wenn die Größe des Eingabe-Arrays groß ist, können diese Algorithmen lange laufen. In diesem und dem folgenden Tutorial werden wir zwei weitere Sortieralgorithmen kennenlernen deren Laufzeiten besser sind: Mergesort und Quicksort. Insbesondere ist die Laufzeit von Mergesort in jedem Fall , und Quicksort läuft in sowohl im besten Fall als auch im Durchschnitt. Seine schlechteste Laufzeit ist . Hier ist eine Tabelle dieser vier Sortieralgorithmen und ihre jeweiligen Laufzeiten:
Algorithmus | Worst-case Laufzeit | Best-case Laufzeit | Average-case Laufzeit |
---|---|---|---|
Auswahl sortieren | |||
Insertionsort | |||
Mergesort | |||
Quicksort |
Teile-und-Herrsche
Mergesort als auch Quicksort liegt ein gemeinsames algorithmisches Paradigma auf der Grundlage von Rekursion zugrunde. Dieses Paradigma, Teile-und-Herrsche , zerlegt ein Problem in Unterprobleme, die dem ursprünglichen Problem ähnlich sind, löst die Unterprobleme rekursiv und kombiniert schließlich die Lösungen der Unterproblemen, um das ursprüngliche Problem zu lösen. Weil Teile-und-Herrsche Unterprobleme rekursiv löst, muss jedes Unterproblem kleiner sein als das ursprüngliche Problem, und es muss einen Basisfall für Subprobleme geben. Du kannst Dir einen Teile-und-Herrsche Algorithmus als aus drei Teilen bestehend vorstellen:
- Teile das Problem in eine Anzahl von Unterproblemen, die kleinere Instanzen des ursprünglichen Problems sind.
- Herrsche über die Unterprobleme, indem du sie rekursiv löst. Jedes Unterproblem wird auf den bis zum Basisfall zerlegt und gelöst.
- Kombiniere die Lösungen der Teilprobleme in die Lösung des ursprüngliche Problems.
Du kannst dir leicht die Schritte eines Teile-und-Herrsche Algorithmus merken als: teile, herrsche, kombiniere. Im folgenden zeigen wir einen Schritt, unter der Annahme, dass der Teile-Schritt zwei Subprobleme erzeugt. (Einige Teile-und-Herrsche Algorithmen produzieren mehr als zwei Subprobleme):
Wenn wir die Subprobleme wiederum in Subprobleme unterteilen, und diese wiederum in Subprobleme, erhalten wir:
Weil Teile-und-Herrsche mindestens zwei Subprobleme erzeugt, macht ein Teile-und-Herrsche Algorithmus mehrere rekursive Aufrufe.
Dieses Tutorial ist in Zusammenarbeit zwischen den Professoren Thomas Cormen und Devin Bock von Dartmouth Computer Sience und dem Khan Academy Computing Curiculum-Team entstanden und wurde von der KA Deutsch Community übersetzt. Das Tutorial ist unter der Lizenz CC-BY-NC-SA lizenziert.
Willst du an der Diskussion teilnehmen?
Noch keine Beiträge.