Documente Academic
Documente Profesional
Documente Cultură
Algoritmul HeapSort. Este un algoritm, care a primit denumirea de aranjarea piramidala (HeapSort). Ideea sa, consta din: in loc de completare aborele se formeaza un sir a[1], a[2],,a[n] aranjat in piramida , aranjarea consta ca fiecare a[i] sa indeplineasca conditia a[i]<=a[2i]si a[i]<=a[2i+1]. Apoi piramida se foloseste pentru aranjare. Cea mai clara metoda de constructi a piramidei,se uita la aranjarea sirul intr-un arbore, prezentat in fig.2.9. Sirul este reprezentat ca arbore binar a carui virf corespunde cu elimentul sirului a[1]. La nivelul doi se gasesc elementele a[2]si a[3]. La nivelul trei a[4],a[5], a[6] a[7] si asa mai departe. Se observa ca petru un sir cu un numar impar de elemente, arborele va fi echilibrat, dar pentr-un un sir cu un numar par de elimente, n elimente a[n] va fi in partea stinga a foii asemanator cu un arbore
a3=5 a6=33
a5=44
a7=1
Pasul
limita piramida). Fie i cel mai mare indice, printre indicii de elemente care sunt limitri importante ale piramidei. Apoi se ia elementul a[i] din arborele,apoi urmeaza procedura de screening(depistare), care const n faptul c ramura a arborelui este selectata corespunzator, min (a[2i], a[2i+1]), precum i valoarea a[i] este schimbata cu valoarea elementului corespunztor. Dac acest element nu este o ramura arborelui, pentru el se face aceiasi procedur etc. Aceste aciuni sunt realizate succesiv pentru a [i], a [i-1], ..., a [1]. Este uor de observat c rezultatul este o vizualizare arborescent a piramidei pentru sirul original (succesiune de etape utilizate n exemplele de sir este prezentat n figurile 2.10 - 2.13).
a3=5 a6=33
a5=44
a7=1
a8=65
Fig. 2.11
Pasul
a3=1 a6=33
a5=44
a7=5
Pasul
a4=23
a8=65
a5=44
Pasul
Fig. 2.13.
n 1964, Floyd a propus o metoda de a construi o piramida, fr construirea explicit a arborelui (dei metoda se bazeaz pe aceleai idei.)Construirea de piramide de Floyd pentru sirul noastru standard, se arat n tabelul
abelul 2.7 Exemplu de construiere a piramidei
Tabelul 2.8 arat cum s sortai utiliznd piramide construite.Esena algoritmului este `1urmatoarea. Fie i - cel mai mare indice a sirului, pentru care sunt semnificativ condiiile de piramida. Apoi, incepind cu a[1]pina la a[i],se efectuiaza urmtoarele aciuni. La fiecare pas, se alege ultimul element al piramidei (n cazul nostru, primul element este selectat a[8]). Se schimba cu locul cu a[1], apoi pentru a[1]se utilizeaza de screening(depistarea). La fiecare pas, numrul de elemente din piramida este redus cu 1 (dup prima etap a piramidei sunt considerate ca elemente ale a[1], a[2], ..., a [n-1], dup a dou a[1] a[2], ..., a [n-2], i aa mai departe, pn
cnd piramida ramine doar un element). Este uor de vazut acest lucru (ilustrat n Tabelul 2.8), care rezultatul va fi un sir aranjat n ordine descresctoare. Avei posibilitatea s modificai metoda de construcie a piramidelor i sortarea pentru a obine comenzi n ordine cresctoare, dac modificai starea unei piramide pe a[i]> = a[2i] si a[1]> = a[2i+1] pentru toate valorile semnificative a indicelui i..
belul 2.8 Sortarea cu ajutorul piramidei Piramida initiala 1 6 5 23 44 33 8 65 65 6 5 23 44 33 8 1 Pasul 1 5 6 65 23 44 33 8 1 5 6 8 23 44 33 65 1 65 6 8 23 44 33 5 1 Pasul 2 6 65 8 23 44 33 5 1 6 23 8 65 44 33 5 1 33 23 8 65 44 6 5 1 Pasul 3 8 23 33 65 44 6 5 1 44 23 33 65 8 6 5 1 Pasul 4 23 44 33 65 8 6 5 1 65 44 33 23 8 6 5 1 Pasul 5 33 44 65 23 8 6 5 1 65 44 33 23 8 6 5 1 Pasul 6 44 65 33 23 8 6 5 1 Pasul 7 65 44 33 23 8 6 5 1
Algoritmul sortari utilizand o piramida necesita ndeplinirea ordinea de trepte nxlog n (log binar) n cel mai rau caz, ceea ce l face deosebit de atractiv pentru sortarea tablouri mari.