Zum Inhalt springen

Informatik · Klasse 11–13 · aktualisiert

Mergesort einfach erklärt: Ablauf und Laufzeit

Du lernst, wie Mergesort Listen halbiert und wieder sortiert verschmilzt, warum er stabil ist und was er an Komplexität und Speicher braucht.

0 von 10 Aufgaben gelöst

Mergesort einfach erklärt: Ablauf und Laufzeit

Kurz gesagt

Mergesort halbiert eine Liste immer weiter, bis nur einzelne Elemente übrig sind, und verschmilzt sie dann zu größeren sortierten Listen. Er ist stabil, wenn der Merge-Schritt passend implementiert ist, hat stets die Komplexität O(n·log n) und braucht zusätzlichen Speicher der Größenordnung O(n).

Stell dir vor, du musst tausend Karteikarten sortieren. Alle auf einmal ist mühsam, zwei sortierte Stapel zusammenzuführen ist dagegen leicht. Genau darauf baut Mergesort auf. Hier lernst du, wie er das macht und wann er die richtige Wahl ist.

Deine Lernziele

Hake ab, was du schon kannst. Löst du alle Aufgaben eines Abschnitts, hakt Mela das Ziel für dich ab.

4 Abschnitte

Mergesort sortiert eine Liste, indem er sie in kleinere Listen zerlegt. Jede kleine Liste wird für sich sortiert. Danach werden die sortierten Listen im Reißverschlussverfahren zu größeren sortierten Listen zusammengefügt, bis die ganze Liste sortiert ist. Die genaue Regel dafür lernst du im nächsten Abschnitt.

Der Teile-Schritt ist einfach: Die Liste wird in zwei Hälften geteilt. Das geht rekursiv weiter. Rekursiv heißt: Das Verfahren ruft sich für die kleineren Teile selbst wieder auf. Das Teilen endet erst, wenn die Teile nur noch aus einzelnen Elementen bestehen. Ein einzelnes Element ist automatisch sortiert.

Die eigentliche Arbeit leistet das Verschmelzen (englisch merge). Daher hat der Algorithmus seinen Namen. Im Pseudocode, einer vereinfachten Programmschreibweise, gibt mergesort eine Liste mit höchstens einem Element unverändert zurück. Sonst halbiert er die Liste, sortiert beide Hälften mit mergesort und verschmilzt die Ergebnisse mit merge. Die Zerlegung läuft rekursiv abwärts, das Verschmelzen geschieht auf dem Rückweg.

Achtung bei der Reihenfolge: Das Beispiel unten ist Ebene für Ebene aufgeschrieben. Das Programm erledigt dagegen erst die linke Hälfte vollständig und dann die rechte.

Definition

Teile und herrsche

Ein Problem wird in kleinere Teile zerlegt, die Teile werden gelöst und die Teillösungen werden zusammengesetzt. Bei Mergesort: Liste halbieren, Hälften sortieren, Ergebnisse verschmelzen. Englisch heißt das Prinzip divide and conquer.

Beispiel: Acht Zahlen zerlegen und zusammensetzen

  1. 1Start: 38 27 43 3 9 82 10 5
  2. 2Teilen: 38 27 43 3 | 9 82 10 5
  3. 3Teilen: 38 27 | 43 3 | 9 82 | 10 5
  4. 4Teilen: 38 | 27 | 43 | 3 | 9 | 82 | 10 | 5
  5. 5Verschmelzen: 27 38 | 3 43 | 9 82 | 5 10
  6. 6Verschmelzen: 3 27 38 43 | 5 9 10 82
  7. 7Verschmelzen: 3 5 9 10 27 38 43 82

Merke: Mergesort teilt, bis nur noch einzelne Elemente übrig sind, und verschmilzt sie danach wieder zu sortierten Listen.

Teste dich

LeichtWann hört das Teilen bei Mergesort auf?
MittelWo leistet Mergesort die eigentliche Arbeit?

Alles auf einen Blick

Mergesort

  • Prinzip

    Mergesort halbiert rekursiv bis zu einzelnen Elementen und verschmilzt danach wieder.

  • Verschmelzen

    Immer die beiden Anfangselemente vergleichen, das kleinere übernehmen, am Ende den Rest anhängen.

  • Stabilität

    Bei Gleichheit kommt mit „kleiner oder gleich“ das linke Element zuerst.

  • Laufzeit

    Stets O(n·log n). Im Beispiel mit 8 Zahlen sind das 3 Ebenen mit je 8 eingefügten Zahlen.

  • Speicher

    Zusätzlicher Speicher der Größenordnung O(n), bei Arrays in der Regel nicht in-place.

Musteraufgabe · Schritt für Schritt

Vier Zahlen mit Mergesort sortieren (ausgedachtes Beispiel)

  1. 1Eingabe (erfundene Zahlen): 6 2 9 1
  2. 2Teilen: 6 2 | 9 1 und dann 6 | 2 | 9 | 1
  3. 3Verschmelzen auf Ebene 1: 6 + 2 → 2 6 und 9 + 1 → 1 9
  4. 4Verschmelzen auf Ebene 2 mit 2 6 und 1 9: Anfänge 2 und 1, die 1 kommt zuerst
  5. 5Dann 2 und 9: die 2 kommt. Dann 6 und 9: die 6 kommt. Die linke Liste ist leer, der Rest 9 wird angehängt
  6. 6Ergebnis: 1 2 6 9
  7. 7Probe: Alle vier Zahlen sind enthalten, jede genau einmal, und die Folge steigt

Fehler finden

Prüfe die Aussagen zum Verschmelzen von 3a 6 und 3b 8 (ausgedachtes Beispiel) In einer Zeile steckt ein Fehler. Tippe sie an.

Lückentext

Wähl in jeder Lücke das passende Wort und prüf dann deine Antworten.

Mergesort teilt die Liste in . Stehen beim Verschmelzen zwei gleiche Anfangselemente vorn, nimmt die Regel „kleiner oder gleich“ das Element aus der Liste. Für Arrays braucht Mergesort normalerweise ein temporäres Array als Zwischenspeicher.

Karteikasten

Erst selbst überlegen, dann umdrehen.

Übung mit Feedback

Abschluss-Check: Mergesort

LeichtWas gilt für die Komplexität von Mergesort ohne besondere Varianten?
MittelDie Liste 1 Anton, 4 Karl, 3 Otto, 5 Bernd, 3 Helmut, 8 Alfred, 1 Paul wird mit einem stabilen Verfahren nach der Zahl sortiert. Welche Reihenfolge entsteht?
SchwerEine riesige Datenmenge passt nicht in den Hauptspeicher. Die Reihenfolge gleicher Schlüssel soll erhalten bleiben. Was passt?

Weiterlesen in Informatik