Was ist mergesort?

Mergesort

Mergesort ist ein effizienter, allgemeiner, vergleichsbasierter Sortieralgorithmus. Die meisten Implementierungen erzeugen eine stabile Sortierung, was bedeutet, dass die Reihenfolge von gleichen Elementen in der Eingabe und Ausgabe gleich ist. Mergesort ist ein Divide-and-Conquer-Algorithmus.

Funktionsweise:

  1. Divide: Die unsortierte Liste wird in n Teillisten unterteilt, wobei jede Teilliste ein Element enthält (eine Liste mit einem Element gilt als sortiert). Siehe: Divide and Conquer.
  2. Conquer: Wiederholt Teillisten zusammenführen, um neue sortierte Teillisten zu erstellen, bis es nur noch eine Teilliste gibt. Dies ist die sortierte Liste. Dieser Schritt basiert auf dem Prinzip des Zusammenfügens von sortierten Listen.

Eigenschaften:

  • Zeitkomplexität: O(n log n) im besten, durchschnittlichen und schlechtesten Fall. Dies macht es zu einem sehr effizienten Algorithmus für große Datensätze. Siehe: Zeitkomplexität.
  • Raumkomplexität: O(n). Mergesort benötigt zusätzlichen Speicherplatz für die temporären Teillisten beim Zusammenführen. Siehe: Raumkomplexität.
  • Stabilität: Mergesort ist ein stabiler Sortieralgorithmus. Siehe: Stabilität%20(Sortieralgorithmen).
  • Divide-and-Conquer: Nutzt das Divide-and-Conquer Paradigma.

Anwendungen:

Mergesort ist nützlich für:

  • Sortieren großer Datenmengen.
  • Situationen, in denen Stabilität wichtig ist.
  • Externe Sortierung (wenn die Daten nicht vollständig in den Speicher passen).

Beispiel (vereinfacht):

Angenommen, wir haben die unsortierte Liste: [38, 27, 43, 3, 9, 82, 10]

  1. Divide: Die Liste wird in einzelne Elemente aufgeteilt: [38], [27], [43], [3], [9], [82], [10]
  2. Conquer:
    • [27, 38], [3, 43], [9, 82], [10]
    • [3, 27, 38, 43], [9, 10, 82]
    • [3, 9, 10, 27, 38, 43, 82] (Sortierte Liste)

Die grundlegende Idee ist das rekursive Aufteilen der Liste und das anschließende sortierte Zusammenführen.