You are on page 1of 7

Sortiranje pomoću binarnih stabala

 Algoritmi za sortiranje zasnovani na binarnim stablima.


 Obradićemo dva algoritma ovog tipa:
 Sortiranje obilaskom binarnog stabla pretrage (tree sort)
 Sortiranje pomoću hipa (heap sort)
 Dva algoritma liče jedan na drugi, jer svaki od njih sortira niz
tako da elemente niza najpre redom ubaci u binarno stablo, a
zatim ih izvadi iz tog stabla u sortiranom redosledu. Razlika je u
vrsti binarnog stabla koje se koristi.
Sortiranje obilaskom binarnog stabla pretrage

 Iz definicije binarnog stabla pretrage i INORDER obilaska


očigledno je da INORDER obilazak posećuje čvorove binarnog
stabla pretrage u sortiranom redosledu s obzirom na njihove
oznake.
 INORDER obilazak najpre posećuje sve čvorove čije su oznake
manje od oznake korena, zatim koren,a na kraju čvorove čije
oznake su veće od oznake korena
 Koren se u nizu posećenih čvorova nalazi na svom “pravom
mestu” u smislu sortiranog poretka po oznakama.
 Isto svojstvo vredi zbog rekurzije i za sve ostale čvorove, pa je
ceo niz posećenih čvorova ispravno sortiran.
Sortiranje obilaskom binarnog stabla pretrage

 Uočena osobina binarnog pretrage i INORDER obilaska može


se iskoristiti za oblikovanje algoritma za sortiranje koji se zove
tree-sort.
 Algoritam kreće od praznog binarnog stabla pretrage.
 Podaci iz niza koji treba sortirati redom se ubacuju u binarno
stablo kao oznake čvorova.
 Nakon što su svi podaci ubačeni, obilazimo binarno stablo
postupkom INDORDER.
 Upisujemo oznake iz binarnog stabla natrag u niz, i to onim
redom kako ih inorder posećuje.
Primer

 Kao primer rada algoritma za sortiranje obilaskom binarnog


stabla pretrage (tree sort), sortirajmo sledeći niz brojeva:
17, 31, 3, 43, 11, 24, 8

17  Prvo sve podatke iz niza redom


ubacujemo u binarno stablo
pretrage. Dobijamo binarno stablo
3 31 prikazano na slici.

 Kad podatke iz tog binarnog stabla


11 24 43 u INORDER redosledu prepišemo
natrag u niz dobijamo:

8 3, 8, 11, 17, 24, 31, 43


Sortiranje pomoću hipa (heap sort)

 Slično kao binarno stablo pretrage, i hip se može primeniti za


sortiranje.
 Podaci iz niza koje želimo sortirati najpre se redom ubacuju u
hip.
 Zatim se podaci redom skidaju sa hipa primenom operacije
izbacivanja najmanjeg elementa, te se vraćaju u niz.
 Zahvaljujući svojstvima hipa, odnosno svojstvima operacije
izbacivanja najmanjeg elementa, podaci izlaze iz hipa u
sortiranom poretku, dakle od namanjeg prema najvećem.
 Rezultujući algoritam za sortiranje naziva se sortiranje pomoću
hipa (heap sort).
 Algoritam se obično implementira tako da se hip smesti u niz, pa
se operacije svode na manipulisanje sa podacima u nizu (slično
kao i ostali algoritmi za sortiranje).
Primer

 Kao primer rada algoritma za sortiranje pomoću hipa (heap


sort), sortirajmo sledeći niz brojeva:
17, 31, 3, 43, 11, 24, 8

 Algoritam najpre dodaje podatke iz niza u hip, a zatim ih skida


sa hipa, pa ih tako dobija natrag u sortiranom redosledu.
 Kad se podaci onim redom kako su bili izbačeni ponovo unesu u
niz, i to od početka niza prema kraju, dobija se niz sa
sadržajem:
3, 8, 11, 17, 24, 31, 43

 Postupak je prikazan na sledećem slajdu.


Primer

3 8 11

11 8 11 17 24 17

43 31 24 17 43 31 24 43 31

17 24 31

24 31 43 31 43

43

You might also like