You are on page 1of 22

UNIVERZITET U SARAJEVU

ELEKTROTEHNIKI FAKULTET
ODSJEK ZA RAUNARSTVO I INFORMATIKU
MULTIMEDIJALNI SISTEMI
2016/17

Mobilna aplikacija za vizualizaciju quick sort algoritma


SEMINARSKI RAD

Amar Bai 1131/16638


Adna Tahi 1196/16457
Mirzet Brki 1166/16565

Sarajevo, februar 2017. g.


Sadraj
1. Uvod.................................................................................................................................................3
2. E-learning i M-learning sistemi........................................................................................................4
3. Quick sort.........................................................................................................................................5
3.1. Uvod..........................................................................................................................................5
3.2. Quick sort algoritam.................................................................................................................5
3.3. Analiza kompleksnosti izvravanja...........................................................................................9
4. Mobilna aplikacija za vizualizaciju quick sort algoritma implementacija..................................10
4.1. Struktura mobilne aplikacije...................................................................................................11
4.2. Glavni algoritam.....................................................................................................................11
5. Mobilna aplikacija za vizualizaciju quick sort algoritma primjer koritenja..............................13
5.1. Uvod........................................................................................................................................13
5.2. Home page..............................................................................................................................13
5.2.1. Unos ulaznog niza brojeva..............................................................................................13
5.2.2. Step-by-step izvravanje.................................................................................................14
5.2.3. Run-all izvravanje.........................................................................................................17
5.3. Quick Sort page......................................................................................................................18
5.4. About page..............................................................................................................................20
6. Zakljuak........................................................................................................................................21
Reference............................................................................................................................................22

2
1. Uvod

3
2. E-learning i M-learning sistemi

4
3. Quick sort
3.1. Uvod
Algoritam sortiranja je takav algoritam koji postavlja elemente ulaznog niza u odreeni redoslijed.
Formalno, algoritam sortiranja rjeava tzv. problem sortiranja (eng. sorting problem) koji kao ulaz
ima sekvencu od n brojeva a1, a2,, an>, a kao izlaz daje permutaciju a1, a2,, an> ulazne
sekvence za koju vrijedi da je a1 a2 an. Gdje je ulazna sekvenca obino niz od n
elemenata, iako moe biti predstavljena i nekom drugom strukturom podataka, kao to je povezana
lista [1].
Intuitivno je i bez detaljnog poznavanja raunarstva jasno zato su algoritmi sortiranja bitni. Kako
navodi [2], postoje mnogi algoritmi koji zahteijvaju da su ulazni podaci sortirani ili su takvi
algoritmi mnogo efikasiji ukoliko su ulazni podaci sortirani. Kao primjer se navodi algoritam
binarnog pretraivanja, ali i openito moemo rei da algoritmi sortiranja slue kao
predprocesiranje za efikasne implementacije algoritama pretraivanja. Najveu distinkciju
izmeu razliitih algoritama sortianja definira efikasnost njihovog izvravanja, meutim, korektna
upotreba odreenog algoritma zavisi i od drugih faktora koji definiraju algoritam. Tako postoje
situacije u kojima je poeljno da se elementi koji se sortiraju mogu dodavati naknadno tj. da ulazni
niz nije fiksne veliine, memorijska ogranienja nekad efikasni algoritmi imaju prevelike
memorijske zahtjeva pa se koriste manje efikasni algoritmi koji zadovoljavaju manje memorije, dok
je nekad jednostavno mjera odabira algoritma ovisna o teini implementacije istog.
Quick sort algoritam predstavlja efikasan algoritam sortiranja razvijen od strane Tony Hoare-a
1959. godine. Algoritam koristi strategiju podijeli, pa vladaj (eng. divide-and-conquer) i moe se
izvravati u mjestu (eng. in place), to znai da osim ulaznog niza elemenata nad kojim se izvodi
sam algoritam, zahtjeva vrlo malo dodatnih memorijskih resursa. Prosjena vremenska
kompleksnost algoritma za n ulaznih elemenata je O(nlogn) , dok je za najgori sluaj O(n2 ) .

U ovom dijelu rada je detaljnije predstavljen algoritam koji se vizualizira u m-learning sistemu. U
nastavku je objanjen sam algoritam, prikazan pseudo kod i sekvenca izvravanja algoritma na
primjeru ulaznog niza te je data osnovna analiza kompleksnosti izvravanja algoritma. Cilj ovog
dijela rada nije prikazati sve to je trenutno poznato o quick sort algoritmu ili dati usporedbe sa
drugim algoritmima poput merge ili heap sorta, nego prikazati najznaajnije elemenate algoritma,
kako bi kasnije mogli implementirati mobilnu aplikaciju za vizualiaciju istog.

3.2. Quick sort algoritam


U uvodnom dijelu je reeno da quick sort algoritam koristi strategiju podijeli, pa vladaj. Ovaj
pristup se obino koristi kod algoritama koji imaju rekurzivnu strukturu tj. koji se pozivaju vie puta
rekurzivno gdje se rjeavanje datog problema obavlja rjeavanjem manjih potproblema istog ili
slinog tipa. Dakle, divide-and-conquer pristup podrazumijeva podjelu (eng. divide) problema u
manje potprobleme koji su slini originalnom problemu, rjeavanje potproblema rekurzivno (eng.

5
conquer) te na kraju kombiniranje (eng. combine) dobivenih rezultata kako bi se dobilo rjeenje
originalnog problema.
U nastavku su objanjeni koraci ove strategije kod quick sort algoritma na primjeru sortiranja
podniza A[p..r][1][3]:
Divide: Particioniranje niza A[p..r] na dva podniza A[p..q-1] i A[q+1..r] takva da je svaki
element niza A[p..q-1] manji ili jednak elementu A[q] koji je, s druge strane, manji ili jednak
od svakog elementa niza A[q+1..r]. Indeks q se rauna kao dio procedure za particioniranje.
Eelement A[q] se naziva pivot. U ovom koraku nam nije od interesa meusobni poredak
elemenata lijevo i desno od pivota, ve je jedino vano da su svi elementi niza u korektnom
poretku u odnosu na pivot (lijevo manji ili jednaki, desno vei ili jednaki).
Conquer: Sortiranje podnizova A[p..q-1] i A[q+1..r] rekurzivnim pozivanjem quick sort
algoritma na iste.
Combine: Kako su podnizovi ve sortirani, nema potrebe za njihovim dodatnim
kombiniranjem tj. cijeli niz A[p..r] je sada sortiran.
Navedeni koraci algoritma se mogu opisati procedurom QUICK-SORT koja je prikazana na slici
3.1. Algoritam se poziva sa poetnim argumentima prvi=0, zadnji=n-1.

Slika 3.1. Pseudo kod quick sort algoritma [2]


Glavni element prikazane procedure je procedura PARTICIJA koja treba da vrati indeks elementa u
nizu koji predstavlja pivot tj. indeks elementa koji je ve sortiran i nalazi se na svojoj konanoj
poziciji. Procedura PARTICIJA se obavlja u mjestu tj. ne koriste se dodatni privremeni nizovi ve
se sve operacije izvode nad ulaznim nizom. Na ovaj nain se osigurava da e ulazni niz na kraju
izvravanja algoritma sadravati sortirane elemente. Funkcija PARTICIJA treba da reorganizira ulazi
niz na nain da se zadovolji svojstvo pivota tj. da svi elementi na indeksu manjem od indeksa pivota
budu manji (ili jednaki) od pivota, a svi elementi na indeksima veim od indeksa pivota budu vei
(ili jednaki) od pivota.
Procedura PARTICIJA je prikazana na slici 3.2. Na poetku procedure uzimamo da je pivot prvi
element u nizu A. Postoje razliite varijante odabira pivota ili koritenja vie pivot elemenata to
neemo dalje objanjavati. Varijabla p oznaava indeks elemenata koji se trenutno porede sa
pivotom, sve dok su ti elementi manji od pivota. Na poetku procedure p je indeks drugog elementa
niza. U petlji 3-5 elementi niza se porede sa pivotom sve dok se ne pojavi element koji je vei od
pivota. U nastavku se kao indeks elementa koji se porede sa pivotom koristi varijabla i. Nakon
prvog pojavljivanja veeg elementa, porede ostali elementi niza te ukoliko je neki manji od pivota
vri se razmjena tog elementa na poziciji i sa elementom na poziciji p te se p uveava za 1.

6
Efektivno se proiruje dio niza koji je manji od pivota, a umanjuje dio niza koji je vei od pivota.
Element na indeksu p predstavlja prvi vei element od pivota, to znai da je po okonaju
poreenja elemenata pivot potrebno postaviti na poziciju p-1, a element koji se nalazi na toj poziciji
postaviti na poetak niza (prvobitnu poziciju pivota). Ovim postupkom je osigurano da su svi
elementi na indeksima manjim od p-1 manji (ili jednaki) od pivota, a svi elementi na indeksima
veim od p-1, vei (ili jednaki) od pivota tj. indeks p-1 predstavlja indeks pivot elementa kojeg
vraa procedura PARTICIJA. Kako je opisano procedurom na slici 3.1. dalje sortiranje niza se
obavlja na podnizovima podijeljenim pivot elementom sve dok podnizovi ne budu imali jedan
element (koji je sortiran).

Slika 3.2. Procedura PARTICIJA [2]


U nastavku je prikazano izvravanje algoritma na ulaznom nizu elemenata: 10, 7, 4, 9, 11, 22, 3, 1,
12. Za odreivanje poetnih particija je prikazana kompletna procedura odreivanja pivota, dok je
ostatak sortiranja prikazan kroz iteracije odreivanja pozicije pivota.
Prema proceduri PARTICIJA, za pivot se uzima prvi element niza (podvuen tankom linijom). U
naem sluaju pivot ima vrijednost 10. Dalje se porede elementi niza sa pivotom sve dok se ne doe
do elementa koji je vei od pivota. Prvi element vei od pivota ima vrijednost 11, na poziciji 4
(oznaen nijansom sive). Na poziciji 4 prestaje napredovanje varijable p i u nastavku elemente
poredimo prema indeksu i. Prvi naredni element koji je manji od pivota je element 3 na poziciji 6,
ovaj element mijenja poziciju sa elementom na p, i p sada postaje 5. Naredni element manji od
pivota 1, na poziciji 7. Nakon zamjene, p postaje 6. Do kraja niza nema nepravilnosti u poretku,
tako da je indeks pivota j = 5 (p 1). Potrebno je razmijeniti elemente na poziciji 0 i na poziciji j.
Ovim je pivot pozicioniran na indeks 5 i moemo primijetiti da su svi elementi lijevo od pivota
manji od pivota, dok su svi elementi desno vei od pivota, dakle pivot element se nalazi na svojoj
konanoj poziciji.
Nakon pronalaska indeksa pivot elementa algoritam nastavlja izvravanje rekurzivnim izvoenjem
quick sort algoritma na particiji 0-4 i particiji 6-8. Ostale iteracije algoritma tj. pozivi procedure
PARTICIJA su prikazani na slici 3.4.

7
0 1 2 3 4 5 6 7 8
10 7 4 9 11 22 3 1 12
p=1
10 7 4 9 11 22 3 1 12
p=2
10 7 4 9 11 22 3 1 12
p=3
10 7 4 9 11 22 3 1 12
p=4
10 7 4 9 11 22 3 1 12
p=4 i=5
10 7 4 9 11 22 3 1 12
p=4 i=6
10 7 4 9 3 22 11 1 12
p=5 i=6
10 7 4 9 3 22 11 1 12
p=5 i=7
10 7 4 9 3 1 11 22 12
p=6 i=7
10 7 4 9 3 1 11 22 12
p=6 i=8
1 7 4 9 3 10 11 22 12
j=5 p=6
Slika 3.3. Poetno odreivanje particija za ulazni niz

1. 1 7 4 9 3 10 11 22 12
2. 1 7 4 9 3 10 11 22 12
3. 1 3 4 7 9 10 11 22 12
4. 1 3 4 7 9 10 11 22 12
5. 1 3 4 7 9 10 11 22 12
6. 1 3 4 7 9 10 11 12 22
7. 1 3 4 7 9 10 11 12 22
8. 1 3 4 7 9 10 11 12 22
Slika 3.4. Primjer izvoenja algoritma

8
3.3. Analiza kompleksnosti izvravanja
U ovom dijelu rada je izvrena kratka i neformalna analiza vremenske kompleksnosti izvravanja
quick sort algoritma kroz razmatranje najgoreg, najboljeg i prosjenog sluaja. Detaljnija i
formalnija analiza bi zahtijevala znatno vie prostora, a kako je ranije naglaeno cilj ovog dijela
rada je prikazati osnovne elemente quick sorta, a ne detaljno analizirati pojedine dijelove istog.
Kako navodi [1], vrijeme izvravanja quick sort algoritma ovisi od toga da li su particije
balansirane, dok balanisranost ovisi od odabira pivota. Pod balansiranosti particija ovdje
podrazumijevamo da je broj elemenata jedne particije priblino jednak broj elemenata druge
particije. Ako su particije balansirane, algoritam se asimptotski izvrava jednako brzo kao i merge
sort. Meutim, ako particije nisu balansirane, algoritam se moe izvravati asimptotski jednako
sporo kao i insertion sort.
U najgorem sluaju niz se dijeli na dvije particije kod kojih jedna sadri 0 elemenata, a druga
preostalih n-1 elemenata. Pretpostavimo da se ovakva situacije desi na svakom rekurzivnom pozivu.
Originalni poziv funkcije zahtijeva cn vremena, sa nekom konstantom c, rekurzivni pozivi na nizu
veliine n-1 elemenata zahtjevaju c(n-1) vremena, na veliini niza n-2 elemenata c(n-2) vremena
itd. Kada saberemo sva vremena za particioniranje na svakom nivou dobijemo da je vrijeme
izvravanja c((n+1)(n/2)-1), to je u big-O notaciji O(n2 ) [4].

Najbolji sluaj izvravanja nastaje kada su particije na svakom nivou jednake duine ili se razlikuju
za jedan element. U oba sluaja maksimalni broj elemenata u particijama je n/2, pa particioniranje
problema dobija izgled slian onome kod merge sorta. U ovom sluaju vrijeme izvravanja je
proporcionalno O(nlogn) .

Prosjeno vrijeme izvravanja quick sort algoritma je mnogo blie najboljem sluaju nego
najgorem. Meutim, dokaz da je prosjeno vrijeme izvravanja algoritma proporcionalno
O(nlogn) vremenu zahtijeva ozbiljnu matematiku analizu. Za potrebe intuitivnog svhatanja
vremena izvravanja algoritma, [1] navodi kako procedura particioniranja moe proizvesti dobre i
loe podjele. U normalnim okolnostima dobre i loe podjele se pojavluju nasumino sa jednakom
vjerovatnoom. Ptretpostavimo da se dobre i loe podjele meusobno smjenjuju na uzastopnim
nivoima rekurzije. Na prvom nivou ulazni niz proizvodi podnizove sa 0 i n-1 elemenata (loa
podjela), dok u narednom nivou rekurzije podniz n-1 proizvodi dva podniza veliina (n-1)/2 -1 i (n-
1)/2 budui da se radi o najboljem sluaju particioniranja. Kombinacija dobrih i loih podjela daje
vrijeme particioniranja proporcionalno O(n) . Meutim, vrijeme izvravanja na dobroj podjeli je
znaajno vee u odnosu na vrijeme za lou podjelu, tako da asimptotski moemo rei da algoritam
najvie vremena provodi izvravajui operacije nad balansiranom podjelom particija. Ovakvim
rezonovanjem dolazimo do zakljuka da se algoritam asimptotski u prosjenom sluaju izvrava
jednako kao i u najboljem sluaju tj. u O(nlogn) vremenu (uz dodatne konstantne faktore koji se
zanemaruju u big-O notaciji).

9
4. Mobilna aplikacija za vizualizaciju quick sort
algoritma implementacija
Implementacija mobilne aplikacije za vizualizaciju quick sort algoritma je uraena za android
ureaje.
Mobilna aplikacija omoguava korisniku da proita na koji nain quick sort algoritam radi uz
tekstualni i vizuelni prikaz.
Pored toga, korisnik ima mogunost unosa brojeva i pokretanje izvrenja algoritma. Postoje dva
naina prikaza izvrenja. Jedan je da se algoritam izvri od poetka do kraja, uz mogunost pauze
izvrenja, a drugi je da se na korisniki zahtjev pokree svaka od iteracija.
Kada korisnik unese niz brojeva, taj niz se prikae kao niz krugova u kojima se nalaze unesene
vrijednosti. Nakon svake iteracije algoritma, desi se nekoliko zamjena tih krugova, tj. krugovi se
sortiraju. Broj sortiranja je razliit za svaku iteraciju, odnosno ovisi o trenutnom stanju algoritma i
trenutnog niza brojeva.

Slika 4.1. Struktura mobilne aplikacije

10
4.1. Struktura mobilne aplikacije
Kao to moemo vidjeti na slici 4.1. aplikacija se sastoji od 5 aktivnosti (eng. activity).
AboutActivity opisuje quick sort algoritam, njegovu kompleksnost i vizuelni prikaz njegovog
izvravanja.
AboutUs opisuje svrhu aplikacije i kreatore aplikacije.
BaseActivity je apstraktna klasa koja slui da sve aktivnosti koje nasljeuju ovu klasu imaju isti
meni.
MainActivity je poetna aktivnost koja omoguava korisniku unos brojeva koji e se sortirati.
QuickSortActivity je glavna aktivnost u kojoj se izvrava algoritam. Ova aktivnost e biti detaljnije
opisana u nastavku.

4.2. Glavni algoritam


Glavni algoritam se sastoji iz tri koraka. Prvi korak je izvravanje jedne iteracije quick sort
algoritma. Ova iteracije se moemo sastojati iz nekoliko zamjena brojeva. Na osnovu niza zamjena
kreiraju se animacije. Animacije predstavljaju vizuelni prikaz zamjene (sortiranja) brojeva. Poto je
broj zamjena razliiti, na osnovu broja animacija se eka sa sljedeom iteracijom. Ovo je
predstavljao veliki problem pri implementaciji jer su sljedee iteracije poinjale prije zavretka
prethodne. Problem je nastajao iz razloga to se animacije pokreu na razliitim nitima programa
(eng. threads). Na slici 4.2. je prikazan jedna iteracija quick sort algoritma.

Slika 4.2. Jedna iteracija algoritma


Varijabla views_for_animation sadri niz svih zamjena (sortiranja) koja su se desila tokom ove
iteracije. Kao to je prethodno navedeno, ova metoda vraa broj zamjena radi sinhronizacije niti.

11
Kao to je prethodno opisano algoritam se sastoji od pivota. Pivot smo prikazali crvenim krugom,
dok smo ostale brojeve prikazali plavim krugom kao na slici 4.3.

Slika 4.3. Nain prikaza pivota (cvreno) i ostalih brojeva (plavo)


Na slici 4.2. pivot predstavlja varijabla p.
Metoda koja vri sortiranje, odnosno zamjenu dva broje je prikazan na slici 4.4.

Slika 4.4. Metoda koja vri sortiranje


Dakle, kod je realizovan pomu steka (eng. Stack) a ne pomou rekurzije kako se inae realizuje
ovaj algoritam.
Pregled realizacije aplikacije e biti prikazan u narednom poglavlju.

12
5. Mobilna aplikacija za vizualizaciju quick sort
algoritma primjer koritenja
5.1. Uvod
U ovom dijelu rada prikazano je koritenje mobilne aplikacije za vizualizaciju quick sort algoritma
na primjeru ulaznog niza brojeva: 10, 7, 4, 9, 11, 22, 3, 1, 12. Pored samog sortiranja prikazane su i
druge mogunosti koje aplikacija prua. Prikaz aplikacije je raen na osnovu slika ekrana (eng.
screenshot) u odreenom trenutku izvravanja.
Kako je ranije spomenuto, aplikacija se sastoji od tri osnovna pogleda/stranice: Home page, About
page i Quick Sort page. Home page je pogled koji korisnik inicijalno dobija prilikom pokretanja
aplikacije, a sadri veliki dio mogunosti aplikacije kao to su: unos brojeva za sortiranje,
izvravanje algoritma korak-po-korak (eng. step-by-step), izvravanje svih iteracija algoritma i
pregled izvrenih zamjena mjesta. About i Quick Sort page su stranice informativnog karaktera koje
daju vie informacija o autorima aplikacije, odnosno o samom quick sort algoritmu.

5.2. Home page


5.2.1. Unos ulaznog niza brojeva
Nakon pokretanja aplikacije korisnik dobija dio Home page prikaza u kojem ima mogunost da
unese eljeni niz brojeva koji je potrebno sortirati. Na poetku je postavljen inicijalni niz: 9, 8, 7, 6,
5, 4, 3, 2, 1 to je prikazano na slici 5.1.

Slika 5.1. Inicijalni prikaz nakon pokretanja aplikacije


Korisnik je obavijeten da je potrebno ulazni niz brojeva unijeti na nain da su brojevi razdvojeni
zarezom. Ukoliko se unese element ulaznog niza koji nije broj (string) ili niz ne potuje naznaenu
strukturu unosa te pokua pokrenuti algoritam pritiskom na dugme START, korisnik se obavjetava
o nepravilnom unosu i onemoguava mu se nastavak sve dok ne unese ispravan niz (slika 5.2.).

13
Slika 5.2. Unos nepravilnog niza brojeva

Slika 5.3. Obavjetenje o nepravilnom unosu

5.2.2. Step-by-step izvravanje


Na slici 5.4. je prikazan poetni izgled Home page nakon ispravnog unosa ulazne sekvence.
Korisnik je obavijeten da je aplikacija spremna za izvravanje algoritma. Brojevi ulazne sekvence s
predstavljeni plavim kruiima u redoslijedu kakav je bio u ulaznoj sekvenci. U gornjem desnom
uglu vidimo da je oznaka pivot elementa crveni krui. Kako u ovom dijelu objanjavamo
ponaanje aplikacije za step-by-step nain izvravanja pokretanje iteracija algoritma vrimo
pritiskom na NEXT dugme.
Na slici 5.5. prikazano je stanje niza nakon izvrenje jedne iteracije (jedno particionisanje)
algoritma. Vidim da algoritam za pivot element uzima element na sredini niza (11) te da je nakon
izvravanja iteracije ouvano svojstvo poretka elemenata u odnosu na pivot. Pivot element je
oznaen crvenim kruiem. U toku izvravanja iteracije prikazuju se zamjene mjesta pojedinih
elemenata uslijed pogrenog redoslijeda na nain da se kruii na kratak vremenski period osvijetle.

14
Slika 5.4. Poetni izgled Home page nakon ispravnog unosa

Slika 5.5. Stanje niza nakon jedne iteracije

Slika 5.6. Stanje niza nakon dvije iteracije

15
Pored animacije sa kruiima, prilikom zamjene mjesta elementima u donjem lijevom uglu se
ispisuje opis zamjene. Na slici 5.6. prikazano je stanje niza nakon druge iteracije, gdje je zadnja
zamjena elemenata bila nad elementima 9 i 10.

Slika 5.7. Stanje niza nakon tri iteracije

Slika 5.8. Stanje niza nakon etiri iteracije


Slika 5.7. prikazuje stanje algoritma nakon tri iteracije gdje pivot ima vrijednost 4, a posljednja
zamjena mjesta je vrena izmeu elemenata 4 i 7. Na slici 5.8. je prikazano stanje niza nakon etiri
iteracije, ukoliko korisnik ponovno pritisne dugme NEXT dobija se informacija da je sortiranje
zavreno. U donjem lijevom uglu se ispisuje sortirani niz. Tokom izvravanja, aplikacija aurira
listu zamjena mjesta. Pritiskom na dugme LOG FILES moe se dobiti lista zamjena u trenutnoj
iteraciji. Ova informacija je korisna zbog boljeg razumijevanja algoritma kao i zbog mogunosti da
se otkriju greke u implementaciji. Na slici 5.9. je prikazana lista zamjena nakon izvravanja
algoritma.

16
Slika 5.9. Lista zamjena nakon izvravanja algoritma

5.2.3. Run-all izvravanje


Pored ranije opisanog naina izvravanja algoritma koji odvojeno prikazuje pojedine iteracije,
aplikacija omoguava jo jedan nain izvravanja koji sve iteracije algoritma izvrava uzastopno tj.
koji izvrava algoritam od poetka do kraja bez zaustavljanja na pojedinim iteracijama.
Predpostavimo da je korisnik ranije unio ispravnu sekvencu brojeva. Pritiskom na dugme START
pokree se izvravanje algoritma. Korisnik moe u bilo kojem trenutku zaustaviti izvravanje
algoritma. Na slici 5.10. je prikazano stanje niza nakon nekoliko iteracija.

Slika 5.10. Stanje algoritma nakon nekoliko iteracija u run-all nainu izvravanja
Dok traje izvravanje algoritma, dugme START je pretvoreno u dugme STOP pomou kojeg se
privremeno pauzira izvravanje. Kao i kod step-by-step metoda, u donjem lijevom uglu se ispisuju
poruke o aktualnoj zamjeni mjesta. Na slici 5.11. je prikazano stanje algoritma nakon to je korisnik
pritisnuo dugme STOP (sada ono postaje START, a u donjem lijevom uglu se ispisuje poruka koja

17
indicira da je algoritam zaustavljen). Ponaanje nakon sortiranja je identino ponaanju u step-by-
step nainu izvravanja.

Slika 5.11. Algoritam pauziran nakon nekoliko iteracija

5.3. Quick Sort page


Pored osnovnog Home prikaza koji je objanjen u prethodnom odjeljku, aplikacija sadri jo dva
prikaza Quick Sort i About page. Pristup ovim prikazima je omoguen kroz meni prikazan na slici
5.12. Na Quick Sort prikazu su date osnovne informacije o quick sort algoritmu poput vremenske
kompleksnosti, naina na koji algoritam radi, pseudo koda te animacije izvravanja algoritma. Ova
stranica ne prua nikakvu interakciju sa korisnikom, ve je samo informativnog karaktera kako bi se
korisnik mogao detaljnije upoznati sa samim quick sort algoritmom. Na slikama 5.13., 5.14. i 5.15.
je prikazana Quick Sort stranica.

Slika 5.12. Meni

18
Slika 5.13. Quick Sort stranica I

Slika 5.14. Quick Sort stranica II

Slika 5.15. Quick Sort stranica III

19
5.4. About page
About page sadri osnovne informacije o aplikaciji i njenim autorima. Ova stranica je prikazana na
slici 5.16.

Slika 5.16. About stranica

20
6. Zakljuak

21
Reference
[1] T. H. Cormen, C. E. Leiserson, and R. L. Rivest, Introduction to algorithms, 3rd ed.
Cambridge, MA: The MIT Press, 2009.
[2] H. upi, Algoritmi i strukture podataka. Sarajevo: Elektrotehniki fakultet Univerziteta u
Sarajevu, 2010.
[3] "Overview of quicksort," in www.khanacademy.org, Khan Academy. [Online]. Available:
https://www.khanacademy.org/computing/computer-science/algorithms/quick-
sort/a/overview-of-quicksort. Accessed: Feb. 3, 2017.
[4] "Analysis of quicksort," in www.khanacademy.org, Khan Academy. [Online]. Available:
https://www.khanacademy.org/computing/computer-science/algorithms/quick-
sort/a/analysis-of-quicksort. Accessed: Feb. 4, 2017.

22

You might also like