Developer Toolbox

Sortowanie przez scalanie

Dzieli listę na pół, sortuje każdą połowę, a potem scala obie połowy w jedną posortowaną listę.

  • Ω(n log n)
  • Θ(n log n)
  • O(n log n)
  • O(n)
  • tak
  • nie
  • porównywanie
  • przenoszenie
  • na właściwym miejscu
0 / 263 kroków

↓ dzielenie ↓ scalanie Scalenia: 0 z 23

Porównania Zapisy

Naciśnij Odtwórz, a linie pokażą, jak rośnie koszt

Naciśnij Odtwórz albo przechodź przez algorytm krok po kroku.

Spacja: odtwórz lub wstrzymaj. Strzałki lewo/prawo: krok. Home i End: przeskocz.

Spróbuj: Wybierz listę z małą liczbą różnych wartości. Gdy dwie są równe, najpierw brana jest ta z lewej połowy, więc ich kolejność się nie zmienia.

Jak to działa

Dziel listę na coraz mniejsze kawałki, aż w każdym zostanie jedna wartość. Taki kawałek jest już posortowany. Potem scalaj kawałki parami: porównuj pierwsze wartości obu kawałków i za każdym razem bierz mniejszą. Uniesiony rząd w animacji to dodatkowa pamięć zajęta podczas scalania.

Kiedy warto go użyć

Gdy sortowanie ma być szybkie nawet w najgorszym przypadku, a równe wartości nie mogą zamienić się miejscami. Z odmiany tego algorytmu korzystają Python i Java. Wadą jest to, że potrzebuje dodatkowej pamięci.