Ist das guter Sortieralgo?

1 Antwort

Naja was heißt "gut", das ist halt ein normaler Mergesort.

An sich hat ist Mergesort heutzutage kein guter Sortieralgorithmus mehr, da dieser O(n) zusätzlichen Speicher benötigt für eine n große Eingabemenge.

Soll heißen, auch wenn er im schlechtesten fall in O(n log(n)) läuft, Quicksort ist im avg-case schneller und benötigt keinen extra Speicher.

Das ist mitunter auch der Grund, warum Mergesort eigentlich nirgens implementiert ist.

Dazu sollte man bei diesen Algorithmen eher auf Bibliotheken zurückgreifen, da diese getestet sind und irgendwelche Randfälle besser abdecken.

Schau dir mal std::sort<>() aus der c++ Standardbibliothek an, der dort implementierte Algorithmus nennt sich "Introsort" und ist das schnellste was mit Vergleichsorientierten Sortierverfahren so geht.

Ist eine Mischung aus Quicksort, Heapsort und Insertionsort, und wenn man keinen stabilen Algorithmus braucht, auch den den man verwenden sollte.

LG


Deadlock 
Fragesteller
 15.05.2023, 12:33

verstehst du mergesort auf anhieb, ich versteh den nicht ganz richtig

0
Valentin1720653  15.05.2023, 12:49
@Deadlock

Also ich habe ihn in meinem Studium behandelt,daher ja ich verstehe ihn.

Es gibt mehrere Versionen von ihm, einen rekursiven und einen nicht rekursiven.

Das Prinzip ist relativ simpel, eine Liste wird einfach rekursiv in n große Teillisten zerteilt, die dann Schritt für schritt richtig sortiert zusammengefügt werden.

https://youtu.be/ZRPoEKHXTJg

Bedenke hier aber dass die Rekursionen nacheinander abgearbeitet werden.

0