Niciodată nu alege vreodată un pivot fix - acest lucru poate fi atacat pentru a exploata algoritmul tau cel mai rau caz O (n ^ 2) de rulare, care este doar cere probleme. Quicksort este cel mai rău caz de rulare are loc atunci când partiționarea rezultate într-o matrice de 1 element și un tablou de n-1 elemente. Să presupunem că alegeți primul element ca partiția. Dacă cineva alimentează o matrice pentru algoritm dvs., care este în ordine descrescătoare, primul pivot va fi cel mai mare, astfel încât orice altceva în matrice se va muta la stânga lui. Atunci când recursiv, primul element va fi cel mai mare din nou, așa că încă o dată ai pus totul la stânga de ea, și așa mai departe.
O tehnica mai buna este mediana-a-3 metoda, în cazul în care alegeți trei elemente la întâmplare, și alegeți mijloc. Știi că elementul pe care o alegeți nu va fi primul sau ultimul, dar, de asemenea, de teorema limită centrală, distribuirea elementului de mijloc va fi normal, ceea ce înseamnă că va tinde spre mijloc (și, prin urmare, , n lg n timp).
Dacă doriți să garanteze O (nlgn) de rulare pentru algoritmul absolut, metoda coloane-a-5 pentru a găsi mediana unei matrice se execută în O timp (n), ceea ce înseamnă că ecuația de recurență pentru sortarerapidă în cel mai rău caz va fi T (n) = O (n) (găsi mediana) + O (n) (partiție) + 2T (n / 2) (recurse la stânga și la dreapta.) Prin master teoremei, acest lucru este O (n lg n) . Cu toate acestea, factorul constant va fi foarte mare, iar în cazul în care cea mai proasta performanta caz este principala dvs. preocupare, utilizați o îmbinare de sortare în schimb, care este doar un pic mai lent decât sortarerapidă, în medie, și garantează O (nlgn) timpul (și va fi mult mai rapid decât acest sortarerapidă median lame).
Explicarea mediană a Medianele Algoritm