Sunteți pe pagina 1din 3

Algoritmul QuickSort

Metoda de sortare a fost propus de ctre Charles Hoare n 1962. Aceast metod este dezvoltarea unei metode simple de schimb i att de eficient, nct a devenit cunoscut sub numele de metoda de sortare rapid QuickSort. Ideea de baz a algoritmului const n faptul c selecteaz la ntmplare un element x al matricei, dup aceasta matricea se analizeaz din stnga, pn cnd nu ntlnete elementul a[i] astfel nct a[i]>x , i apoi matricea se studiaz din partea dreapt, pn cnd nu ntlnete elementul a[j] astfel nct a[j]<x. Aceste 2 elemente sunt schimbate, precum i procesul de vizualizare, compararea i schimbul continu pn cnd vom ajunge la elementul x. n rezultat, matricea se divide n dou pri stnga i dreapta, n partea stnga valorile cheie vor fi mai mici dect x, iar n partea dreapt valorile cheie vor fi mai mari dect x. n continuare procesul continu recursiv pentru partea stng i dreapt a matricei, pn cnd fiecare parte nu va conine exact un element. Cunoatem, ca de obicei , recursia poate fi nlocuit prin iteraii, dac s pstrm n memorie indicii corespunztori din matrice. S urmm acest proces, ca de exemplu, n matricea noastr standard (tabel 2.6).Tabelul 2.6. Exemplu QuickSort.
1.

Starea initial a matricei

8 23 5 65 |44| 33 1 6 |--------| 8 23 5 6 44 33 1 65

Pasul 1 (n calitate de x se alege a[5]) |---| 8 23 5 6 1 33 44 65 8 23 |5| 6 1 33 44 65 Pasul 2 (n submatricea a[1], a[5] n calitate de x se alege a[3]) |--------| 1 23 5 6 8 33 44 65 |--|

1 5 23 6 8 33 44 65 1 5 23 |6| 8 33 44 65 Pasul 3 (n submatricea a[3], a[5] n calitate de x se alege a[4]) |----| 1 5 8 6 23 33 44 65 1 5 8 |6| 23 33 44 65 Pasul 4 (n submatricea a[3], a[4] se alege a[4]) |--| 1 5 6 8 23 33 44 65

Algoritmul nu este numit fara motiv sortarea rapid, ntruct pentru evaluarea lui numrul de comparaii i schimburi este O(nlogn). De fapt, de cele mai multe ori, tablourile de sortare utilizeaz anume acest algoritm.

mbuntiri
n practic pentru a crete viteza, dar nu cea asimptotic, putem face cteva optimizri: 1. n cazul funciei de partiie elementul central este selectat n mijloc. Aceast alegere mbuntete estimarea timpului mediu, n cazul n care matricea este ordonat parial. O metod mai puin eficient pentru aceast situaie apare atunci cnd de fiecare dat se lucreaz cu funcia de partiie i n calitate de element central se alege cel mai mare sau cel mai mic element. 1'. Putem selecta media din primele elemente, ultimele i cele mijlocii. Maxim Razin: n acest caz, numrul de treceri va scdea de 7/6 ori. 2. Pentru matrici mai scurte se numete sortare prin inserare. Din cauza recursiei i a altor calcule adaugtoare QuickSort nu este un algoritm eficient pentru tablouri mici. De aceasta, dac n masiv sunt mai puin de 12 elemente, se numete sortare prin inserare. Valoarea pragului nu este critic aceasta este extrem de dependent de calitatea codului generat.

3. Dac ultimul operator al funciei este un apel la aceast funcie, atunci se numete coad-recursiv. Aceasta are sens s fie nlocuit prin iteraii n acest caz mai bine de utilizat stiva. 4. Dup rupere mai nti se sorteaz prima seciune. Aici, de asemenea, mai bine de utilizat stiva, ntruct seciunile mici se sorteaz mai rapid i ele au nevoie de o stiv mai mic. Cerinele de memorie sunt reduse de la n la logn.