У QuickSort всегда есть квадратная среда выполнения, если вы выберете максимальный элемент в качестве pivot?

cs.stackexchange https://cs.stackexchange.com/questions/3377

Вопрос

Если у вас есть быстрый алгоритм, и вы всегда выбираете самый маленький (или самый большой) элемент в качестве своего шарнира; Правильно ли я предполагаю, что если вы предоставите уже отсортированный набор данных, вы всегда получите производительность в худшем случае независимо от того, находится ли ваш «уже отсортированный» список в восходящем или нисходящем порядке?

Я думаю, что, если вы всегда выбираете самый маленький элемент для своего олова, то независимо от того, отсортируется ли ваш уже сохраненный вход тот же размер?

Это было полезно?

Решение

Худшая сложность для QuickSort - $ theta (n^2) $. Это достигается путем выбора поворотов, которые делят набор, так что у одной группы есть только один участник. С плохим алгоритмом сбора поворота, это может быть легко достигнуто, выбрав один конец отсортированного набора. Ваше предположение верно.

Другие советы

Да! Вы думаете, что это абсолютно правильно! И, как правильно упомянуто Yuval Filmus, время работы будет $ theta (n^2) $

У одного Subarray будет $ 0 $ или $ 1 $ элемент, в то время как у другого будет элементы $ (n-1) $; Следовательно, это $ o (n^2) $: $$ t (n) = t (n-1)+t (0)+o (n) = o (n^2) $$

Лицензировано под: CC-BY-SA с атрибуция
Не связан с cs.stackexchange
scroll top