VISOKA POSLOVNA ŠKOLA STRUKOVNIH STUDIJA

BLACE

SEMINARSKI RAD

PREDMET:

Algoritmi i strukture podataka

TEMA:

Složenost unutrašnjeg sortiranja

  

  

Student:

Simonović Filip R39/09

Mentor:

dr Branislav Jevtović

Filip Simonović R39/09                                                                                                               Seminarski rad

Sadržaj

1. Uvod........................................................................................................................3

2. Sortiranje poređenjem............................................................................................4

Metodi umetanja........................................................................................................5

Direktno umetanje......................................................................................................5

Umetanje sa smanjenjem inkrementa........................................................................7

3. Metodi selekcije......................................................................................................8

Direktna selekcija........................................................................................................9

Sortiranje pomoću binarnog stabla..........................................................................11

Heapsort....................................................................................................................12

4. Metodi zamene.....................................................................................................18

Direktna zamena.......................................................................................................18

Particijsko sortiranje.................................................................................................20

Tema: Složenost unutrašnjeg sortiranja

2

background image

Filip Simonović R39/09                                                                                                               Seminarski rad

                      Slika   1:   Sortiranje   po   adresi   –   stanje   pokazivača:   a)   pre   sortiranja   i  
b) posle sortiranja

Drugi način je ulančavanje zapisa između sebe u listu bez njihovog premeštanja. Tada svaki 

zapis treba da ima i dodatno polje 

link

 koje ukazuje na zapis sa sledećom vrednošću ključa, kao i 

spoljašnji pokazivač 

first

 koji pokazuje na zapis sa najmanjim (ili najvećim) ključem (slika 2). Ovde 

se potreba za premeštanjem izbegava prevezivanjem liste bez fizičkog pomeranja zapisa.

Slika 2: Sortiranje prevezivanjem pokazivača

Postoji više pristupa problemu unutrašnjeg sortiranja, sa mnogo varijanti algoritama različite 

složenosti i ostalih karakteristika. Najopštiji način za sortiranje je međusobno upoređivanje podataka 
po   ključu,   pa   se   ova   grupa   metoda   naziva  

sortiranje   poređenjem

.   Pokazuje   se   da   su   najbolje 

performanse kod ovih metoda u srednjem i najgorem slučaju ograničene na  

O

(

n

  log  

n

). Postoji, 

takođe, i jedan manji broj metoda koji nisu zasnovani na međusobnom poređenju ključeva, već se 
zasnivaju na nekim specifičnim karakteristikama ključeva, a mogu da postignu i linearnu složenost 

O

(

n

). Posle izlaganja obe grupe metoda i razmatranja njihovih reprezentativnih tehnika, na kraju se 

daje opšte poređenje metoda unutrašnjeg sortiranja.

Tema: Složenost unutrašnjeg sortiranja

4

2 3

R

1

4 8

1 5

3 7

R

2

R

3

R

4

key

lin k

first

Filip Simonović R39/09                                                                                                               Seminarski rad

2. Sortiranje poređenjem

Svi metodi ovoga tipa su zasnovani isključivo na međusobnom poređenju vrednosti ključeva 

odgovarajućih   zapisa   koji   se   sortiraju.   Glavni   pristupi   se   mogu   svrstati   u   četiri   grupe:   metodi 
umetanja, metodi selekcije, metodi zamene i metodi spajanja. Prve tri grupe se razmatraju u ovoj 
glavi, a metodi spajanja, iako mogu da se koriste i za unutrašnje sortiranje, predstavljaju skoro 
isključivi način sortiranja podataka na spoljašnjim uređajima, pa se zato razmatraju u narednoj glavi. 
U izlaganju u okviru svake grupe se postupno počinje sa  

direktnim metodima.  

Ovi metodi dobro 

odslikavaju osnovne principe, jer su jednostavni, kratki i laki za razumevanje. Pomenute prednosti 
se plaćaju slabijim performansama, pa tako za velike skupove podataka treba koristiti složenije, ali 
efikasnije algoritme. Međutim, za male skupove podataka njihove prednosti ne dolaze do izražaja, 
pa su to slučajevi gde se direktni metodi primenjuju. 

Metodi umetanja

Ova grupa metoda se zasniva na principu postepenog uređivanja niza, tako što se u svakom 

trenutku održava uređeni i neuređeni deo. U svakom koraku se uzima jedan element iz neuređenog 
dela i umeće na odgovarajuće mesto u uređenom delu, koji na taj način raste. Predstavnici ove grupe 
metoda su: direktno umetanje i umetanje sa smanjenjem inkrementa.

Direktno umetanje

Osnovni princip se najbolje odslikava u metodu 

direktnog umetanja

. U početku se uređeni 

deo sastoji samo od prvog elementa niza, a u neuređeni deo spadaju svi ostali elementi. Neka se 
posle 

- 1 koraka u uređenom delu nalaze elementi 

a

1

 ... 

a

i

-1

. Tada se u koraku 

i

 uzima prvi element 

iz neuređenog dela 

a

i

 i ubacuje na mesto koje mu po neopadajućem poretku odgovara u uređenom 

delu, čime se ovaj deo povećava za jedan element. Sortiranje se završava kad nema više elemenata u 
neuređenom delu. Direktno umetanje je ilustrovano po koracima za dati skup ključeva na slici 3. 
Algoritam za sortiranje direktnim umetanjem je realizovan procedurom INSERTION-SORT. Ulaz u 
proceduru predstavlja neuređeni niz ključeva 

a

[1:

n

], koji ona na kraju napravi uređenim.

Tema: Složenost unutrašnjeg sortiranja

5

background image

Filip Simonović R39/09                                                                                                               Seminarski rad

mesto naviše i tako prave mesto za njegovo umetanje. Metod je stabilan jer kad ključ koji se umeće 
dođe do jednakog ključa u uređenom delu, on se stavlja neposredno iza njega. 

Implementacija gornjeg algoritma može da se učini i efikasnijom tako što se pre sortiranja 

stavi graničnik u 

a

[0] čija vrednost odgovara minimalnom ključu u nizu. Tada nema potrebe da se u 

unutrašnjoj petlji proverava da li je 

j

 veće od nule, jer tekući element onda ne može da ide dalje od 

pozicije 

a

[1].

Umetanje sa smanjenjem inkrementa

Pokazuje se da veliki broj premeštanja u metodu direktnog spajanja dolazi zbog činjenice da 

se premeštaju samo susedni elementi, tako da element koji se umeće mora da pomeri u proseku oko 

n

/3 ostalih. Bolji rezultati bi se mogli očekivati ako se umesto kratkih koraka omoguće skokovi na 

većoj distanci. Značajno poboljšanje u ovom smeru u odnosu na direktno umetanje predložio je 
Shell u metodu koji se naziva 

umetanje sa smanjenjem inkrementa

 ili 

shellsort

Metod prvo razdvoji početni niz na grupe tako što u svaku grupu svrstava elemente na 

ekvidistantnim pozicijama u nizu. Ovaj razmak između elemenata u grupi se naziva 

inkrementom 

h

1

.   Broj   grupa,   naravno,   odgovara   vrednosti   inkrementa.   Zatim   se   ove   grupe   posebno   sortiraju 

primenom metoda direktnog umetanja i niz postaje 

h

1

-sortiran. U narednom koraku u nizu koji je 

nastao posle prvog koraka inkrement se smanjuje na 

h

2

 < 

h

1

 i tako formira manji broj grupa sa većim 

brojem elemenata, pa se one opet nezavisno sortiraju. U svakom sledećem koraku isti postupak se 
ponavlja sa smanjenim inkrementom. Na kraju se postupak završava svođenjem inkrementa na 1 što 
znači  da je čitav  niz jedna  grupa čijim  se sortiranjem dobija konačan  rezultat.  Ovaj  poslednji, 
jedinični korak garantuje potpunu sortiranost niza. Na slici 4 demonstriran je rad ovog metoda. U 
prvom koraku inkrement je 4, pa postoje četiri grupe od po 2 elementa, da bi se u drugom koraku 
inkrement smanjio na 2, a u trećem, poslednjem koraku na 1.

Tema: Složenost unutrašnjeg sortiranja

7

0

6

2 7

5 7

6 5

7 5

6 5

7 5

6

5 7

9 9

2 7

0

9 6

h

1

 =  4

6 5

2 7

0

5 7

9 9

7 5

6

9 6

h

2

 =  2

0

2 7

6

5 7

6 5

7 5

9 9

9 6

h

3

 =  1

9 6

9 9

Želiš da pročitaš svih 22 strana?

Prijavi se i preuzmi ceo dokument.

Ovaj materijal je namenjen za učenje i pripremu, ne za predaju.

Slični dokumenti