Developer Toolbox

Пирамидальная сортировка

Превращает список в кучу, то есть дерево, где каждый родитель больше своих детей. Затем раз за разом переносит наибольшее значение в конец.

  • Ω(n log n)
  • Θ(n log n)
  • O(n log n)
  • O(1)
  • нет
  • да
  • сравнение
  • перемещение
  • на окончательном месте
0 / 299 шагов
Сравнения Обмены

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

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

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

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

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

Куча хранится прямо в списке: дети значения на позиции i стоят на позициях 2i+1 и 2i+2, а наибольшее значение всегда в начале. Обменом переносим его в конец, уменьшаем кучу на одно значение и восстанавливаем её. Отсортированная часть растёт справа.

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

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