Mergesort is een efficiënt sorteeralgoritme dat gebruikmaakt van de techniek van “verdeel en heers”. Het sorteert een lijst door deze te splitsen in kleinere delen, deze delen apart te sorteren en vervolgens de gesorteerde delen samen te voegen om de uiteindelijke gesorteerde lijst te verkrijgen.
Hier is een basisstappenplan voor Mergesort:
Het samenvoegen van de gesorteerde delen gebeurt zo efficiënt mogelijk door te beginnen met de kleinste elementen van beide delen te vergelijken en deze in de resulterende lijst samen te voegen, en vervolgens verder te gaan naar de volgende elementen totdat alle elementen zijn samengevoegd.
Mergesort heeft een tijdscomplexiteit van O(n log n), wat het efficiënt maakt, zelfs voor grote lijsten. Het is echter belangrijk op te merken dat Mergesort extra geheugenruimte vereist voor het samenvoegen van de delen, wat de ruimtecomplexiteit kan verhogen.
Schrijf een functie merge_sort met een lijst van getallen als parameter die een gesorteerde lijst als returnwaarde heeft.
>>> merge_sort([64, 34, 25, 12, 22, 11, 90])
[11, 12, 22, 25, 34, 64, 90]
>>> merge_sort([73, 41, 74, 72, 8, 10, 57, 84, 68, 21])
[8, 10, 21, 41, 57, 68, 72, 73, 74, 84]