Быстросортировать, когда его выбор поворота является случайным, имеет время выполнения O (n lg n), где n - размер массива. Если его выбор опорных точек находится в упорядоченном порядке, его время выполнения ухудшается до O (n^2). Независимо от того, выбираете ли вы стержень с левой стороны, с правой стороны, в середине или в случайном порядке, это не имеет значения, поскольку возможно, если не вероятно, выбрать опорные точки в отсортированном порядке.
Единственный способ избежать этого - гарантировать, что опорные точки не в порядке, используя технику, такую как «Медиана трех».
Согласно Роберту Седжуику, Алгоритмы, издательство Addison-Wesley Publishing Company, 1988, стр. 124, если вы используете метод Median of Three, чтобы выбрать опорный стержень и остановить рекурсию для небольших разделов (от 5 до 25 дюймов; это оставляет массив несортированным, но вы можете быстро завершить его с помощью сортировки вставки), тогда quicksort всегда будет O (n lg n) и, кроме того, будет работать на 20% быстрее, чем обычная quicksort.
Ваш источник: – templatetypedef