2015-09-30 2 views
-3

У меня средняя сложность случая для быстрой сортировки. Теперь как я могу найти верхнюю и нижнюю границы для быстрого сортировки?Как найти верхнюю и нижнюю границу для быстрого сортировки?

+0

В хорошей книге об алгоритмах, может быть? – Henry

+0

Подумайте о случаях, которые легко или трудно для быстрого сортировки и определения их времени работы. Подсказка: хорошо сбалансированная и сильно неуравновешенная. –

+0

(Есть тривиальные границы, и существуют ограниченные границы. В одном потоке _space complex_ не может превышать _time-сложность_, но как насчет _power_, _ease адаптации_ или _использования_?) Может ли _sort_ быть правильным, если он игнорирует даже одно значение? Посмотрите на шаг _partition_: какой самый большой раздел может быть создан? – greybeard

ответ

0

Временная сложность быстрого сортировки всегда равна O (N log (N)). Это связано с тем, что он должен проходить через все числа массива и делить их одинаково. на две вспомогательные массивы, которые ниже и выше, чем выбранный стержень. Каждый из этих вспомогательных массивов должен проходить через один и тот же процесс. Это разделение и победа продолжается до тех пор, пока не будут отсортированы только массивы размером 2. Чтобы вычислить это, требуется N log (N). это легко увидеть с помощью двоичного дерева, где сортируются листья (нижние строки). Тогда вы просто конкатенируете их.

 8 
    4  4 
2 2 2 2 

Быстрое сортирование сталкивается с проблемами при сортировке массива. В такой ситуации что-то вроде сортировки вставки будет иметь алгоритм времени O (N). Работа с массивами, которые частично отсортированы, и вам нужен хруст времени (то есть, если вы имеете дело с Миллионами данных), тогда вам может понадобиться создать алгоритм вашего собственного дизайна, который соответствует вашему вкусу.

Ссылка: https://en.wikipedia.org/wiki/Quicksort

Смежные вопросы