Почему для завершения каждого уровня стека вызовов в быстрой сортировке требуется O (n) времени? - PullRequest
0 голосов
/ 26 мая 2020

Я нашел это объяснение быстрой сортировки в Интернете:

This is the call stack given in the book

Написано, что для завершения каждого уровня стека вызовов требуется O (n) времени. Однако разве мы не делаем меньше n сравнений, когда go поднимаемся вверх по стеку вызовов?

1 Ответ

0 голосов
/ 27 мая 2020

Временная сложность O (n) игнорирует постоянные факторы. Этот оператор обрабатывает каждое разбиение как дробную константу исходных n элементов. Идеальное разделение было бы примерно 50% и 50%, за исключением того, что схемы типа Ломуто не включают элемент поворота при рекурсивных вызовах. Таким образом, в случае, когда самый глубокий слой дает 2 элемента, постоянный коэффициент для O (n) будет 2 / n (поскольку (2 / n) (n) == 2).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...