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

Пирамидальная сортировка: интерактивная анимация (Heap Sort)

Интерпретируем массив как двоичное дерево и просеиваем максимумы

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

Данные: Случайные
Данные:

Дерево кучи - для извлечения максимумов

Массив - индексы a[i] совпадают с узлами дерева

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

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

Идея алгоритма: Мы представляем исходный массив в виде двоичного дерева, где каждый элемент больше или равен своим потомкам. Такая структура называется сортирующей кучей (Max-Heap). В корне этой кучи (первый элемент массива) всегда находится максимальный элемент. Алгоритм просто берет максимум, ставит его в конец массива, а оставшуюся часть дерева восстанавливает, "просеивая" новый корень вниз.

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

Пирамидальная сортировка работает быстро всегда. Ей абсолютно неважно, отсортирован исходный массив или перемешан, так как высота двоичного дерева всегда остается логарифмической. Сложность принято записывать через O-нотацию - у нас есть отдельная анимация о том, как читать такие записи.

По времени

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

Случай Время Комментарий
Лучший случай O(n log n) Если все элементы одинаковые, можно достичь O(n), но для массивов с разными элементами время выполнения всегда логарифмическое.
Средний случай O(n log n) Самый частый случай: перестроение кучи после обмена занимает время, пропорциональное высоте дерева.
Худший случай O(n log n) Никаких неприятных сюрпризов, сортировка стабильно отрабатывает за O(n log n).

По памяти

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

Характеристика Оценка Комментарий
Дополнительная память O(1) Сортировка происходит "на месте" без создания копий массивов. Стек вызовов также не тратится, если просеивание реализовано через цикл.

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

Устойчивой называется сортировка, которая не меняет взаимный порядок равных элементов.

Характеристика Оценка Комментарий
Устойчивость Нет В процессе построения кучи и извлечения корня одинаковые элементы могут меняться местами на большие расстояния, что нарушает их исходный порядок.

Примеры реализации пирамидальной сортировки (Heap Sort)

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