Referat Sortare Rapida
Mai jos puteti citi fragmente din
Referat Sortare Rapida si de asemenea puteti face
Download Referat Sortare rapidaCiteste fragmente din Referat Sortare Rapida
Sortare rapida (QuickSort)
Secventa de comparatie din HYPERLINK
"http://algoritmi.pardel.net/index.php?cat=4&subcat=7" o "Sortare prin
metoda lui Batcher" metoda lui Batcher este predeterminata; de fiecare
data se compara aceleasi perechi de chei, indiferent de rezultatele
comparatiilor anterioare.
Sortarea rapida, in schimb, foloseste rezultatele fiecarei comparatii
pentru a stabilii care sunt cheile care urmeaza a fi comparate.
Deci, se foloseste urmatoare schema: se utilizeaza doi indicatori i si
j, cu i=1 si j=N. Se compara Ki cu Kj si daca nu este necesar
interschimbul, se micsoreaza j cu 1, repetandu-se procesul. Daca apare
un interschimb, se mareste i cu 1si se continua compararea marind i pana
la aparitia unui interschimb. Apoi, se micsoreaza din nou j,
continuandu-se in acelasi mod, pana cand i=j.
Exemplu:
Numerele: 503 087 512 061 908 170 897 275 653 426 154 509 612 677 765
703
Descreste j
Interschimb 1: 154 087 512 061 908 170 897 275 653 426 503 509 612 677
765 703
Mareste i
Interschimb 2: 154 087 503 061 908 170 897 275 653 426 512 509 612 677
765 703
Descreste j
Interschimb 3: 154 087 426 061 908 170 897 275 653 503 512 509 612 677
765 703
Mareste i
Interschimb 4: 154 087 426 061 503 170 897 275 653 908 512 509 612 677
765 703
Descreste j
Interschimb 5: 154 087 426 061 275 170 897 503 653 908 512 509 612 677
765 703
Mareste i
Interschimb 6: 154 087 426 061 275 170 503 897 653 908 512 509 612 677
765 703
Descreste j
Fiecare comparatie din exemplu, a implicat cheia 503; in general,
fiecare comparatie va implica valoarea originala a cheii K1, deoarece ea
va fi modificata odata cu fiecare schimbare de directie.In momentul cand
i=j, inregistrarea originala R1, va fi plasata in pozitia finala,
deoarece se poate vedea ca nu vor exista chei mai mari la stanga sa si
nici mai mici la dreapta sa. Inregistrarile vor fi impartite intr-o
asemenea maniera, incat problema initiala este redusa la doua probleme
mai simple: sortarea Ri - Ri-1 si sortarea Ri+1 - RN. Se poate aplica
aceasi tehnica fiecarei dintre aceste doua multimi de inregistrari.
Pentru a tine minte multimile de elemente care sunt impartite, se
foloseste o stiva. Alt exemplu, care arata modul in care sunt sortate
inregistrarile prin acesta metoda, este dat in tabelul de mai jos.
Parantezele, indica inregistrarile care mai trebui sortate;
inregistrarile impartite in grupe sunt reprezentate prin doua variabile
l si r, care reprezinta limitele inregistrarilor care sunt curent
examinate.
 Stiva   (l,r)
[503 087 512 061 908 170 897 275 653 426 154 509 612 677 765 703] (1,16)
-
[154 087 426 061 275 170] 503 [897 653 908 512 509 612 677 765 703]
(1,6) (8,16)
[061 087] 154 [426 275 170] 503 [897 653 908 512 509 612 677 765 703]
(1,2) (4,6) (8,16)
061 087 154 426 275 170 503 [897 653 908 512 509 612 677 765 703] (4,6)
(8,16)
061 087 154 170 275 426 503 [897 653 908 512 509 612 677 765 703] (4,5)
(8,16)
061 087 154 170 275 426 503 [897 653 908 512 509 612 677 765 703] (8,16)
-
061 087 154 170 275 426 503 703 653 765 512 509 612 677 897 908 (8,14) -
061 087 154 170 275 426 503 677 653 612 512 509 703 765 897 908 (8,12) -
061 087 154 170 275 426 503 509 653 612 512 677 703 765 897 908 (8,11) -
061 087 154 170 275 426 503 509 653 612 512 677 703 765 897 908 (9,11) -
061 087 154 170 275 426 503 509 512 612 653 677 703 765 897 908 (9,10) -
061 087 154 170 275 426 503 509 512 612 653 677 703 765 897 908 -
   -
 Aceata metoda de sortare, a fost numita sortare prin interschimb de
partitii; ea a fost propusa de C. A. R. Hoare. Hoare, si-a denumit
metoda "sortare rapida". Intregul proces de sortare, necesita doar 48 de
comparatii, fiind intrecuta la numarul de comparatii doar de sortarea
prin insertie binara, care are un numar de 47 de comparatii. Si numarul
de interschimbari este destul de mic, ea necesitand doar 17
interschimbari.
Algoritmul:
Inregistrarile R1, ..., RN sunt rearanjate pe loc; dupa terminarea
sortarii, cheile lor vor fi in ordine K1, ..., KN. Pentru memorarea
temporara, este necesara o stiva cu cel mult log2N intrari.
N. (egalitatea este permisa).
1 este un parametru care trebuie ales dupa cum se descrie mai jos.
Pe durata unei etape particulare, sunt efectuate una sau doua comparatii
suplimentare (permitand indicatorilor i si j sa se intersecteze).
Inregistrarile cu chei egale, sunt interschimbate, desi nu este strict
necesar (Idea este datorata lui R. C. Singleton, si ajuta la sectionarea
grupurilor de inregistrari pe jumatate, atunci cand sunt un numar egal
de elemente).
ÂÂ
[Initializeaza.] Stabileste stiva vida si l=1, r=N
[Incepe o noua etapa.] (Se doreste sortarea grupurilor de inregistrari
Rl ...Rr). Daca r-1