Изменения

Перейти к: навигация, поиск

Smoothsort

607 байт добавлено, 21:37, 3 апреля 2015
Нет описания правки
===Вставка элемента===
[[Файл:add-example.png|470px|thumb|right|Пример вставки элемента (без просеивания вниз)]]
[[Файл:Leonardo-heap-2.png|470px|thumb|right|Вставка в последовательность куч, показанную выше, числа 13. Далее будет сразу происходить просеивание внутри "зеленого" дерева Леонардо, так как корень соседнего дерева меньше, чем дети корня "зелёного" дерева.]]
При добавлении в последовательность нового элемента возможны две ситуации:
===Недостатки===
* не является устойчивой,
* требует <tex dpi = 120> O(\log{N}) </tex> дополнительной памяти для хранения длин куч в последовательности. Однако с помощью некоторых модификации можно получить <tex dpi 120> O(1) </tex> дополнительной памяти.
===Связь с быстрой сортировкой===
На практике, когда реализуют алгоритм быстрой сортировки, пытаются улучшить асимптотику в самом плохом случае. Для этого заводится некоторый лимит глубины рекурсии, при превышении которого запускают сортировку кучей. Так реализована стандартная сортировка в стандартной библиотеке языка С++. Однако чтобы улучшить время работы в некоторых случаях, можно вместо сортировки кучей использовать плавную сортировку.
212
правок

Навигация