QuickSort sau Sortarea rapidă este o metodă eficientă de sortare a unui tablou, descoperită în 1960 de programatorul britanic C.A.R. Hoare. Pentru un set de n valori oarecare algoritmul efectuează O(n log n) comparații, dar în cazul cel mai nefavorabil se efectuează O(n^2) comparații
Algoritmul este de tip divide et impera; el sortează o secvență a tabloului (inițial întreg tabloul), astfel:
Următoarea funcție C++ realizează sortarea unui tablou, transmis ca parametru:
void QuickSort(int v[], int st, int dr)
{
if(st < dr)
{
//pivotul este inițial v[st]
int m = (st + dr) / 2;
int aux = v[st];
v[st] = v[m];
v[m] = aux;
int i = st , j = dr, d = 0;
while(i < j)
{
if(v[i] > v[j])
{
aux = v[i];
v[i] = v[j];
v[j] = aux;
d = 1 - d;
}
i += d;
j -= 1 - d;
}
QuickSort(v, st , i - 1);
QuickSort(v, i + 1 , dr);
}
}
În această secțiune poți genera un rezumat al conținutului paginii folosind AI! Fii liber să folosești butonul de mai jos oricând ești pe grabă și nu ai timp să înveți tot!
În această secțiune poți întreba expertul nostru robot orice legat de nelămuririle pe care le-ai întâlnit de-a lungul lecțiilor! Fii liber să folosești butonul de mai jos oricând ai nevoie de explicații adiționale!