Общие прилагательные перед быстрой сортировкой являются детерминированными и рандомизированными. Детерминированный означает, что быстрая сортировка всегда будет сортировать один и тот же набор данных одним и тем же способом, в то время как рандомизированная быстрая сортировка использует рандомизацию и редко сортирует одни и те же данные одним и тем же точным способом (если набор данных не очень мал - тогда он более распространен) .
Детерминированный
Все сводится к выбору опорных точек. В детерминированной быстрой сортировке стержни выбираются либо всегда выбирая стержень с тем же относительным индексом, как первый, последний или средний элемент, либо используя медиану любого числа предопределенных элементов выбора. Например, распространенным методом является выбор медианы первого, последнего и среднего элементов в качестве оси. Даже с помощью метода медианы-3, который я только что описал, некоторые наборы данных могут легко дать O (N ^ 2) временную сложность. Примером набора данных является так называемый набор данных органных труб:
array = [1,2,3,4,5,6,7,8,9,10,9,8,7,6,5,4,3,2,1]
Рандомизированное
Рандомизированные быстрые сортировки могут выбрать просто случайный пивот или использовать медиану некоторого числа случайно выбранных пивотов. Существует возможность O (N ^ 2) временной сложности, но вероятность намного, намного меньше и становится меньше с увеличением размера набора данных.