Деление на ноль

Сортировка слиянием: интерактивная анимация (Merge Sort)

Рекурсивно делим массив пополам, а затем сливаем отсортированные половины обратно

Визуализация

Данные: Случайные
Данные:
Легенда цветов
не обработан сравниваем копируем на своем месте
Нажмите "Пуск" или листайте по шагам.
Сравнения: 0 Копирования: 0 Глубина: 0 Шаг: 0 / 0 Сложность по времени: -

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

Идея алгоритма. Массив рекурсивно делится пополам до тех пор, пока не останутся подмассивы из одного элемента. Затем соседние подмассивы сливаются в один, причем при слиянии элементы сразу расставляются в правильном порядке. В итоге за log n уровней рекурсии весь массив оказывается отсортированным.

Сложность алгоритма

Сложность - это оценка того, как быстро растет потребление ресурса при росте длины массива n. Ресурса у алгоритма два, поэтому и оценки две: по времени и по памяти. Обе записывают через O-нотацию - у нас есть отдельная анимация о том, как читать такие записи.

По времени

Показывает, как растет число операций (здесь это сравнения и копирования) при росте n. Лейбл "Сложность" под визуализацией - время, которое получилось фактически на ваших данных.

Случай Время Комментарий
Лучший O(n log n) Даже на отсортированных данных алгоритм делит и сливает
Средний O(n log n) Число сравнений стабильно: всегда log n уровней рекурсии
Худший O(n log n) Гарантированная верхняя граница, без вырождений

По памяти

Показывает, сколько дополнительной памяти нужно алгоритму. Сам входной массив в эту оценку не входит: дополнительной считается память сверх него.

Характеристика Оценка Комментарий
Дополнительная память O(n) Нужен вспомогательный массив для слияния. Это главный недостаток по сравнению с сортировками на месте

Устойчивость алгоритма

Устойчивой называется сортировка, которая не меняет взаимный порядок равных элементов. Пример: сортируем учеников по оценке, а внутри одной оценки они уже стояли по алфавиту. Устойчивая сортировка сохранит алфавитный порядок внутри каждой оценки, неустойчивая - может перемешать.

Характеристика Оценка Комментарий
Устойчивость Да При слиянии равных элементов берем из левой половины первым: исходный порядок сохраняется. Проверьте на наборе "Одинаковые"

Примеры реализации сортировки слиянием (Merge Sort)

Хотите разобрать тему глубже? В нашем бесплатном курсе есть урок про сортировку слиянием - с подробной теорией, задачами и проверочными вопросами.