Mergesort: Unterschied zwischen den Versionen
Aus KGS-Wiki
Sn (Diskussion | Beiträge) Beispiel ausgelagert |
Sn (Diskussion | Beiträge) Beispiel zufallsgesteuert (nur aus Spaß) |
||
| Zeile 1: | Zeile 1: | ||
{{Thumbnailbox|INHALT={{/Beispiel}} | {{Thumbnailbox|INHALT={{/Beispiel|{{Random number|3=94}}|{{Random number|3=73}}|{{Random number|3=58}}|{{Random number|3=61}}|{{Random number|3=22}}|{{Random number|3=20}}|{{Random number|3=46}}|{{Random number|3=75}}}} | ||
|CAPTION=Der Mergesort-Algorithmus sortiert die Liste <code>[94 | |CAPTION=Der Mergesort-Algorithmus sortiert die Liste <code>[{{#af_join:{{#af_list:{{Random number|3=94}}|{{Random number|3=73}}|{{Random number|3=58}}|{{Random number|3=61}}|{{Random number|3=22}}|{{Random number|3=20}}|{{Random number|3=46}}|{{Random number|3=75}}}}|, }}]</code>}} | ||
[[Mergesort]] ist ein [[Algorithmus|Sortieralgorithmus]], der nach dem Prinzip ''[[Divide and Conquer]]'' arbeitet; und zwar wie folgt: | [[Mergesort]] ist ein [[Algorithmus|Sortieralgorithmus]], der nach dem Prinzip ''[[Divide and Conquer]]'' arbeitet; und zwar wie folgt: | ||
Version vom 16. Februar 2024, 07:09 Uhr
Der Mergesort-Algorithmus sortiert die Liste
[61, 31, 27, 85, 79, 45, 55, 35]Mergesort ist ein Sortieralgorithmus, der nach dem Prinzip Divide and Conquer arbeitet; und zwar wie folgt:
Gegeben: Liste A der Länge n.
- Falls
n < 2:Aist sortiert, gibAzurück. - Ansonsten: Teile die Liste in zwei möglichst gleich große Hälften
- Sortiere die beiden Hälften mit Mergesort
- Füge die sortierten Teillisten nach folgendem Verfahren zusammen:
- Betrachte das erste Element der beiden Teillisten
- Wähle das kleinere davon aus, entferne es aus der Teilliste und füge es in die sortierte Gesamtliste ein
- Wiederhole diese beiden Schritte für den Rest der beiden Teillisten, bis beide leer sind.
Die Schritte 1 bis 3 bilden die Divide-Phase, Schritt 4 die Conquer-Phase des Algorithmus.
Laufzeit
Um die Liste in zwei Haufen zu unterteilen, muss man alle n Elemente betrachten, ist also in . Das Zusammenfügen am Ende hat eine Laufzeit, die nicht von der Länge der Eingabeliste abhängt, ist also in . Anders als bei Quicksort, das im schlimmsten Fall n Mal unterteilt werden muss, muss die Liste bei Mergesort genau Mal unterteilt werden. Es ergibt sich eine Gesamtlaufzeit in .
Weblinks
