Nigdy przenigdy wybrać stałą pivot - to mogą być atakowane wykorzystanie algorytmu za najgorszy O (n ^ 2) wykonania, która jest tylko kłopoty. najgorszym przypadku wykonawcze Quicksort za występuje, gdy podział wyniki jednego elementu tablicy 1, oraz jeden układ n-1 elementów. Załóżmy, że wybrać pierwszy element jako partycji. Jeśli ktoś żywi tablicę do swojego algorytmu, który jest w kolejności malejącej, Twoja pierwsza oś będzie największym, więc wszystko inne w tablicy przesunie się na lewo od niego. Wtedy, kiedy przeszukanie, pierwszy element będzie znowu największy, więc jeszcze raz umieścić wszystko na lewo od niej, i tak dalej.
Lepszą techniką jest metoda mediana-of-3, gdzie można wybrać trzy elementy w sposób losowy, a następnie wybierz pola. Wiesz, że elementem, który wybierzesz nie będzie pierwszą lub ostatnią, ale również przez centralne twierdzenie graniczne, podział elementu środkowego będzie normalnie, co oznacza, że będzie zmierzać w kierunku środka (a zatem n log n czasie).
Jeśli koniecznie chcemy zagwarantować O (nlgn) czas pracy algorytmu, sposób na znalezienie medianę tablicy kolumny-of-5 działa w O (n) czasie, co oznacza, że równanie nawrót do quicksort w najgorszym przypadku będzie zostać T (n) = o (n) (znaleźć mediana) + o (n) (przegroda) + 2T (n / 2) (rekursja w lewo i w prawo). do głównego twierdzenie to o (n log n) , Jednak stały czynnik będzie ogromny, a jeśli najgorsze wydajność sprawa jest Twój główny problem, użyj seryjnej sortowania zamiast, który jest tylko trochę wolniej niż quicksort średnio i gwarantuje O (nlgn) czas (i będzie znacznie szybciej niż tego kulawego mediany quicksort).
Wyjaśnienie mediana median Algorithm