Nikdy si vybrat pevný čep - to může být napadena využít algoritmu v nejhorším případě O (n ^ 2) za běhu, což je jen koleduje o malér. Quicksort nejhorší případ runtime dochází při rozdělování výsledky v jednom poli 1 elementu a jednoho pole n-1 prvků. Předpokládejme, že si vyberete první prvek jako svůj oddíl. Pokud se někdo krmí pole do svého algoritmu, který je v sestupném pořadí, budou vaše první pivot být největší, takže vše, co v poli se přesune do nalevo od něj. Pak, když jste recurse, první prvek bude opět největší, takže ještě jednou dáte všechno nalevo od něj, a tak dále.
Lepší metoda je střední-of-3 metoda, kde si vybrat tři prvky náhodně, a zvolte střed. Víte, že prvek, který si vyberete nebude první ani poslední, ale také tím, že centrální limitní věta, rozdělení středního prvku bude normální, což znamená, že budete mít sklon směrem ke středu (a tudíž , n lg n času).
Pokud si absolutně chcete zaručit O (nlgn) runtime pro algoritmus, metoda pro nalezení mediánu pole sloupce-of-5 běží v O (n) čas, což znamená, že opakování rovnice pro quicksortu v nejhorším případě bude být T (n) = o (n) (zde medián) + o (n) (blok) + 2T (n / 2) (recurse vlevo a vpravo). masterem věty, to je o (n lg n) , Nicméně, konstantní faktor bude obrovská, a pokud se nejhorší případ výkon je váš hlavní náplní, použijte sloučení sort místo, což je jen o trochu pomalejší než quicksortu v průměru, a zaručuje O (nlgn) čas (a bude mnohem rychlejší než tento lame střední quicksortu).
Vysvětlení Median mediánové algoritmu