Изменения

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

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

1604 байта убрано, 18:32, 13 июня 2016
Оптимизация глубины рекурсии до O(logn) в худшем случае
quicksort(a, 1, j)
quicksort(a, i, r)
 
==Оптимизация глубины рекурсии до O(logn) в худшем случае==
Во избежание достижения опасной глубины рекурсии в худшем случае (или при приближении к нему) возможна модификация алгоритма, устраняющая одну ветвь рекурсии: вместо того, чтобы после разделения массива вызывать рекурсивно процедуру разделения для обоих найденных подмассивов, рекурсивный вызов делается только для меньшего подмассива, а больший обрабатывается в цикле в пределах этого же вызова процедуры. С точки зрения эффективности в среднем случае разницы практически нет: накладные расходы на дополнительный рекурсивный вызов и на организацию сравнения длин подмассивов и цикла — примерно одного порядка. Зато глубина рекурсии ни при каких обстоятельствах не превысит <tex>\log n</tex>, а в худшем случае вырожденного разделения она вообще будет не более 2 — вся обработка пройдёт в цикле первого уровня рекурсии.
== Источники информации ==
635
правок

Навигация