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

Описание

  Один из быстрых известных универсальных алгоритмов сортировки массивов (в среднем O(n log n) обменов при упорядочении n элементов). Является существенно улучшенным вариантом алгоритма сортировки с помощью прямого обмена. Принципиальное отличие состоит в том, что после каждого прохода элементы делятся на две независимые группы.

Оценка сложности

Лучшая Средняя Худшая
n log n n log n

Лучший случай

Если в каждой итерации каждый из подмассивов будет делиться на два равных по величине массива

4 1 3 2 6 5

Худший случай

Если на каждом этапе массив будет разделяться на вырожденный подмассив из одного опорного элемента и на подмассив из всех остальных элементов

0 1 2 3 4 5 6 7 8 9 2 5 1 6 3 7 0 8 4 9

Код

  • JavaScript
  • C#

Испытания

Сравнение с нерекурсивной формой

Вычисление...

Массивы из емкостью в 100 500 5000 50000

  На упорядоченных (частично или обратно) массивах, нерекурсивная форма примерно в 2-4 раза медленнее, чем рекурсивная. Но, иногда, когда массив из большого количества случайных величин вынуждает рекурсивную форму совершать множество рекурсивных вызовов и сложных сравнений (например, строк или больших чисел), нерекурсивная форма вполне может выигрывать.