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