Изменения

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

Быстрая сортировка

1 байт добавлено, 21:25, 11 июня 2012
Оптимизация глубины рекурсии до O(logn) в худшем случае
==Оптимизация глубины рекурсии до O(logn) в худшем случае==
Во избежание достижения опасной глубины рекурсии в худшем случае (или при приближении к нему) возможна модификация алгоритма, устраняющая одну ветвь рекурсии: вместо того, чтобы после разделения массива вызывать рекурсивно процедуру разделения для обоих найденных подмассивов, рекурсивный вызов делается только для меньшего подмассива, а больший обрабатывается в цикле в пределах этого же вызова процедуры. С точки зрения эффективности в среднем случае разницы практически нет: накладные расходы на дополнительный рекурсивный вызов и на организацию сравнения длин подмассивов и цикла — примерно одного порядка. Зато глубина рекурсии ни при каких обстоятельствах не превысит log<subtex>2\log n</subtex>n, а в худшем случае вырожденного разделения она вообще будет не более 2 — вся обработка пройдёт в цикле первого уровня рекурсии.
== Ссылки ==
Анонимный участник

Навигация