Developer Toolbox

Mergesort

Splitst de lijst in twee helften, sorteert elke helft en voegt de twee gesorteerde helften daarna samen tot één gesorteerde lijst.

  • Ω(n log n)
  • Θ(n log n)
  • O(n log n)
  • O(n)
  • ja
  • nee
  • wordt vergeleken
  • wordt verplaatst
  • op definitieve plek
0 / 263 stappen

↓ splitsen ↓ samenvoegen Samenvoegingen klaar: 0 van 23

Vergelijkingen Schrijfacties

Druk op afspelen: de lijnen tonen hoe de kosten oplopen

Druk op afspelen of doorloop het algoritme stap voor stap.

Spatie: afspelen of pauzeren. Pijltjes links/rechts: stap. Home en End: springen.

Probeer dit: Kies een lijst met weinig unieke waarden. Van twee gelijke waarden gaat die uit de linkerhelft eerst, zo blijft hun volgorde behouden.

Hoe het werkt

Blijf de lijst splitsen tot elk stukje één waarde heeft. Zo'n stukje is al gesorteerd. Voeg de stukjes daarna per paar weer samen: vergelijk de eerste waarden van beide stukjes en neem de kleinste, steeds opnieuw. De opgetilde rij in de animatie is de extra ruimte die het samenvoegen nodig heeft.

Wanneer het een goede keuze is

Als je snelheid nodig hebt die ook in het slechtste geval goed blijft, en gelijke waarden hun volgorde moeten houden. Python en Java gebruiken allebei een versie van mergesort. Het nadeel is het extra geheugen.