Что это?
Quicksort — это алгоритм «разделяй и властвуй» для сортировки списков данных. Он работает, упорядочив один элемент (стержень) относительно двух других групп элементов (те, которые меньше и больше, чем свод), а затем быстро сортируя эти две группы. Этот процесс повторяется для все меньших и меньших частей списка, пока весь список не будет отсортирован.
Как это работает?
Быстрая сортировка построена вокруг следующей идеи:
Массив сортируется, если для любого заданного элемента e:
- Элементы слева от e меньше (или равны) e
- Элементы справа от e больше (или равны) e
- Элементы слева от e отсортированы
- Элементы справа от e отсортированы
При быстрой сортировке мы часто называем произвольно выбранный элемент опорным элементом, а две группы меньших и больших элементов — разделами.
Быстрая сортировка работает по существу:
1. Выбор произвольного элемента e
2. Разделение массива таким образом, чтобы:
● Все элементы слева от e меньше (или равно) e
● Все элементы справа от e больше (или равно) e
3. Быстрая сортировка левого и правого разделов
Выполнение
Примечания
- Быстрая сортировка выполняется за время O(N log N) (средний случай)
- Быстрая сортировка выполняется за O(N²) (в худшем случае)
- Существует множество способов выбора раздела. Время наихудшего случая достигается, когда выбранный опорный элемент всегда является минимумом/максимумом.
- Для быстрой сортировки требуется O(1) пробела. Единственное требование к памяти — достаточно места для замены двух элементов (и нескольких итераторов).