Developer Toolbox

Сортировка слиянием

Делит список пополам, сортирует каждую половину и сливает их в один отсортированный список.

  • Ω(n log n)
  • Θ(n log n)
  • O(n log n)
  • O(n)
  • да
  • нет
  • сравнение
  • перемещение
  • на окончательном месте
0 / 263 шагов

↓ разделение ↓ слияние Слияний выполнено: 0 из 23

Сравнения Записи

Нажмите «Воспроизвести»: линии покажут, как растут затраты

Нажмите «Воспроизвести» или проходите алгоритм по шагам.

Пробел: воспроизведение или пауза. Стрелки влево и вправо: шаг. Home и End: в начало или в конец.

Попробуйте: Выберите «Мало разных значений». Из двух равных значений первым берём то, что из левой половины, поэтому равные значения сохраняют порядок.

Как это работает

Делим список, пока в каждой части не останется по одному значению. Такая часть уже отсортирована. Затем сливаем части попарно: сравниваем первые значения обеих частей и берём меньшее, и так раз за разом. Поднятый ряд в анимации - это дополнительное место, нужное при слиянии.

Когда стоит применять

Когда скорость не должна падать даже в худшем случае, а равные значения должны сохранить свой порядок. Python и Java используют вариант сортировки слиянием. Минус у неё один: нужна дополнительная память.