Mergesort: Unterschied zwischen den Versionen
Aus KGS-Wiki
Sn (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „{{subst::Quicksort}}“) |
Sn (Diskussion | Beiträge) (Seite angelegt) |
||
Zeile 1: | Zeile 1: | ||
[[ | [[Mergesort]] ist ein [[Algorithmus|Sortieralgorithmus]], der nach dem Prinzip ''[[Divide and Conquer]]'' arbeitet; und zwar wie folgt: | ||
Gegeben: Liste <code>A</code> der Länge <code>n</code>. | Gegeben: Liste <code>A</code> der Länge <code>n</code>. | ||
* Falls <code>n < 2</code>: <code>A</code> ist sortiert, brich ab. Ansonsten… | * Falls <code>n < 2</code>: <code>A</code> ist sortiert, brich ab. Ansonsten… | ||
* Teile die Liste in zwei möglichst gleich große Hälften | |||
* Teile die Liste in zwei | * Sortiere die beiden Hälften mit Mergesort | ||
* Sortiere | * Füge die sortierten Teillisten nach folgendem Verfahren zusammen: | ||
* Füge die | ** 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. | |||
== Laufzeit == | == Laufzeit == | ||
Um die Liste in zwei Haufen zu unterteilen, muss man alle <code>n</code> Elemente betrachten, ist also in <math>\mathcal{O}(n)</math>. Das Zusammenfügen am Ende hat eine Laufzeit, die nicht von der Länge der Eingabeliste abhängt, ist also in <math>\mathcal{O}(1)</math>. | Um die Liste in zwei Haufen zu unterteilen, muss man alle <code>n</code> Elemente betrachten, ist also in <math>\mathcal{O}(n)</math>. Das Zusammenfügen am Ende hat eine Laufzeit, die nicht von der Länge der Eingabeliste abhängt, ist also in <math>\mathcal{O}(1)</math>. Anders als bei [[Quicksort]], das im schlimmsten Fall <code>n</code> Mal unterteilt werden muss, muss die Liste bei Mergesort genau <math>\log n </math> Mal unterteilt werden. Es ergibt sich eine Gesamtlaufzeit in <math>\mathcal{O}(n\log n)</math>.{{Navigationsleiste Sortieralgorithmen}} | ||
Version vom 16. Januar 2024, 18:00 Uhr
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
:A
ist sortiert, brich ab. 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.
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