Quicksort este un algoritm de sortare utilizat pe scară largă cunoscut pentru eficiența sa. Înțelegerea performanței sale implică analiza numărului așteptat de comparații și swap-uri în timpul execuției. Acest articol explorează principiile matematice din spatele acestor așteptări, concentrându-se pe analiza probabilistica a Quicksort.

Numărul preconizat de comparații

Numărul de comparaţii aşteptat în Quicksort depinde de alegerea pivotului şi a procesului de partiţionare. Presupunând că toate permutările sunt la fel de probabile, cazul mediu poate fi analizat folosind ecuaţii recursive. Pentru o gamă de dimensiuni n, comparaţiile aşteptate, denumite C(n), satisfac recurenţa:

C(n) = n - 1 + frac{1}{n} suma {k=0}^{n-1} [C(k) + C(n - 1 - k) ]

Această recurență simplifică un rezultat binecunoscut: C(n)

Numărul preconizat de swap-uri

Swap-urile în Quicksort au loc în timpul procesului de partiționare. Numărul preconizat de swap-uri este legat de numărul de comparații și de distribuția opțiunilor pivot. În mod uniform, swap-urile preconizate, denumite S(n), pot fi estimate prin analiza etapelor de partiție.

Fiecare pas de partiție implică elemente de swapping pentru a asigura plasarea corectă a pivotului. swap-urile preconizate pe partiție sunt proporționale cu dimensiunea subarray-urilor. Sumar peste toate apelurile recursive produce o aproximare: S(n) n [n] n ln.

Rezumatul aşteptărilor

  • Comparisons: Aproximativ 2n ln n pentru mari n.
  • Swaps: Aproximativ n ln n pentru mari n.
  • Ambele indicatori cresc logaritmic cu dimensiunea array-ului, reflectând eficiența Quicksort.