Sunteți pe pagina 1din 5

Algoritmul HeapSort.

Structuri si algoritmi de prelucrarea


datelor.
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

a1=8
a2=23
a4=65

a3=5

a5=44

a6=33

a7=1
Pasul

a8=6

Fig2.9
n mod evident,la construirea piramidei suntem interesati de elementele a[n / 2], a[n/2-1], ...,
a[1] pentru sirurii cu un numr par de elemente, i elementele a[(n-1) 2], a[(n-1) / 2-1], ...,a[1]
pentru sirurii cu un numr impar de elemente (ca numai aceste sunt elemente eseniale pentru a

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).

a1=8
a2=23
a4=6

a3=5

a5=44

a7=1

a6=33

a8=65
Pasul
Fig. 2.10.

a1=8
a2=23

a3=1
a7=5

a6=33

a5=44

a4=6

a8=65

Pasul

Fig. 2.11

a1=8
a2=6
a4=23

a3=1

a5=44

a6=33

a7=5

a8=65
Fig. 2.12.

Pasul

a1=1
a2=6

a4=23

a3=8

a5=44

a6=33

a7=5

a8=65
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

Starea initiala a sirului

8 23 5 |65| 44 33 1 6

Pasul 1

8 23 |5| 6 44 33 1 65

Pasul 2

8 |23| 1 6 44 33 5 65

Pasul 3

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

Pasul 4
1 6 5 23 44 33 8 65

Tabelul 2.8 arat cum s sortai utiliznd piramide construite.Esena algoritmului este
urmatoarea. 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.

S-ar putea să vă placă și