Sortiranje izborom. Sortiranje izborom (Selection( lista koja se sortira kraća a za jedan element Primjer:

Σχετικά έγγραφα
Riješeni zadaci: Nizovi realnih brojeva

Sortiranje spajanjem (Merge( Sort) Algoritam sortiranja spajanjem: ulaz je lista a 1. ,,, a n/2. , izlaz sortirana lista

Strukture podataka i algoritmi 1. kolokvij 16. studenog Zadatak 1

KOMUTATIVNI I ASOCIJATIVNI GRUPOIDI. NEUTRALNI ELEMENT GRUPOIDA.

Dvanaesti praktikum iz Analize 1

Granične vrednosti realnih nizova

IZVODI ZADACI (I deo)

DISKRETNA MATEMATIKA - PREDAVANJE 7 - Jovanka Pantović

Operacije s matricama

3.1 Granična vrednost funkcije u tački

Niz i podniz. Definicija Svaku funkciju a : N S zovemo niz u S. Za n N pišemo a(n) = a n i nazivamo n-tim članom niza.

UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET SIGNALI I SISTEMI. Zbirka zadataka

Sortiranje prebrajanjem (Counting sort) i Radix Sort

2 tg x ctg x 1 = =, cos 2x Zbog četvrtog kvadranta rješenje je: 2 ctg x

Osnovni primer. (Z, +,,, 0, 1) je komutativan prsten sa jedinicom: množenje je distributivno prema sabiranju

Trigonometrija 2. Adicijske formule. Formule dvostrukog kuta Formule polovičnog kuta Pretvaranje sume(razlike u produkt i obrnuto

Računarska grafika. Rasterizacija linije

Nizovi. Definicija. Niz je funkcija. a: R. Oznake: (a n ) ili a n } Zadatak 2.1 Napišite prvih nekoliko članova nizova zadanih općim članom:

ELEKTROTEHNIČKI ODJEL

IZVODI ZADACI ( IV deo) Rešenje: Najpre ćemo logaritmovati ovu jednakost sa ln ( to beše prirodni logaritam za osnovu e) a zatim ćemo

PRAVA. Prava je u prostoru određena jednom svojom tačkom i vektorom paralelnim sa tom pravom ( vektor paralelnosti).

( x) ( ) dy df dg. =, ( x) e = e, ( ) ' x. Zadatak 001 (Marinela, gimnazija) Nađite derivaciju funkcije f(x) = a + b x. ( ) ( )

PARCIJALNI IZVODI I DIFERENCIJALI. Sama definicija parcijalnog izvoda i diferencijala je malo teža, mi se njome ovde nećemo baviti a vi ćete je,

M086 LA 1 M106 GRP. Tema: Baza vektorskog prostora. Koordinatni sustav. Norma. CSB nejednakost

3n an = 4n3/2 +2n+ n 5n 3/2 +5n+2 n a 2 n = n 2. ( 2) n Dodatak. = 0, lim n! 2n 6n + 1

Elementi spektralne teorije matrica

XI dvoqas veжbi dr Vladimir Balti. 4. Stabla

18. listopada listopada / 13

41. Jednačine koje se svode na kvadratne

Iskazna logika 3. Matematička logika u računarstvu. novembar 2012

Aritmetički i geometrijski niz

PRIMJER 3. MATLAB filtdemo

MATRICE I DETERMINANTE - formule i zadaci - (Matrice i determinante) 1 / 15

Veleučilište u Rijeci Stručni studij sigurnosti na radu Akad. god. 2011/2012. Matematika. Monotonost i ekstremi. Katica Jurasić. Rijeka, 2011.

VJEROVATNOĆA-POJAM. Definicija vjerovatnoće Σ = f x f. f f. f x f. f f ... = Σ = Σ. i...

INTEGRALNI RAČUN. Teorije, metodike i povijest infinitezimalnih računa. Lucija Mijić 17. veljače 2011.

Računarska grafika. Rasterizacija linije

a M a A. Može se pokazati da je supremum (ako postoji) jedinstven pa uvodimo oznaku sup A.

Mate Vijuga: Rijeseni zadaci iz matematike za srednju skolu 2. ARITMETICKI I GEOMETRIJSKI NIZ, RED, BINOMNI POUCAK. a n ti clan aritmetickog niza

Polarizacija. Procesi nastajanja polarizirane svjetlosti: a) refleksija b) raspršenje c) dvolom d) dikroizam

(P.I.) PRETPOSTAVKA INDUKCIJE - pretpostavimo da tvrdnja vrijedi za n = k.

POVRŠINA TANGENCIJALNO-TETIVNOG ČETVEROKUTA

Pošto pretvaramo iz veće u manju mjernu jedinicu broj 2.5 množimo s 1000,

21. ŠKOLSKO/OPĆINSKO/GRADSKO NATJECANJE IZ GEOGRAFIJE GODINE 8. RAZRED TOČNI ODGOVORI

Dijagonalizacija operatora

NOMENKLATURA ORGANSKIH SPOJEVA. Imenovanje aromatskih ugljikovodika

Cauchyjev teorem. Postoji više dokaza ovog teorema, a najjednostvniji je uz pomoć Greenove formule: dxdy. int C i Cauchy Riemannovih uvjeta.

Binarno stablo (BinaryTree)

1 Promjena baze vektora

Kaskadna kompenzacija SAU

7 Algebarske jednadžbe

TRIGONOMETRIJA TROKUTA

S t r a n a 1. 1.Povezati jonsku jačinu rastvora: a) MgCl 2 b) Al 2 (SO 4 ) 3 sa njihovim molalitetima, m. za so tipa: M p X q. pa je jonska jačina:

Apsolutno neprekidne raspodele Raspodele apsolutno neprekidnih sluqajnih promenljivih nazivaju se apsolutno neprekidnim raspodelama.

IspitivaƬe funkcija: 1. Oblast definisanosti funkcije (ili domen funkcije) D f

numeričkih deskriptivnih mera.

Linearna algebra 2 prvi kolokvij,

Centralni granični teorem i zakoni velikih brojeva

II. ANALITIČKA GEOMETRIJA PROSTORA

Kontrolni zadatak (Tačka, prava, ravan, diedar, poliedar, ortogonalna projekcija), grupa A

PRIMJER PRORAČUNA NOSIVOST NEARMIRANOG ZIĐA NA VERTIKALNO OPTEREĆENJE

Zavrxni ispit iz Matematiqke analize 1

TRIGONOMETRIJSKE FUNKCIJE I I.1.

Definicija: Beskonačni niz realnih brojeva je funkcija a : N R. Umjesto zapisa a(1), a(2),,a(n), može se koristiti zapis a 1,

3. razred gimnazije- opšti i prirodno-matematički smer ALKENI. Aciklični nezasićeni ugljovodonici koji imaju jednu dvostruku vezu.

Sume kvadrata. mn = (ax + by) 2 + (ay bx) 2.

- pravac n je zadan s točkom T(2,0) i koeficijentom smjera k=2. (30 bodova)

Teorijske osnove informatike 1

1.4 Tangenta i normala

Eliminacijski zadatak iz Matematike 1 za kemičare

Matematička analiza 1 dodatni zadaci

2log. se zove numerus (logaritmand), je osnova (baza) log. log. log =

Ispitivanje toka i skiciranje grafika funkcija

SEMINAR IZ KOLEGIJA ANALITIČKA KEMIJA I. Studij Primijenjena kemija

Linearna algebra 2 prvi kolokvij,

Trigonometrijske nejednačine

( , 2. kolokvij)

Riješeni zadaci: Limes funkcije. Neprekidnost

Algoritmi i strukture podataka - 1.cas

Neka je a 3 x 3 + a 2 x 2 + a 1 x + a 0 = 0 algebarska jednadžba trećeg stupnja. Rješavanje ove jednadžbe sastoji se od nekoliko koraka.

radni nerecenzirani materijal za predavanja R(f) = {f(x) x D}

Funkcije dviju varjabli (zadaci za vježbu)

METODA SEČICE I REGULA FALSI

KVADRATNA FUNKCIJA. Kvadratna funkcija je oblika: Kriva u ravni koja predstavlja grafik funkcije y = ax + bx + c. je parabola.

Pismeni ispit iz matematike Riješiti sistem jednačina i diskutovati rješenja sistema u zavisnosti od parametra: ( ) + 1.

ZBIRKA POTPUNO RIJEŠENIH ZADATAKA

RIJEŠENI ZADACI I TEORIJA IZ

Zadaci sa prethodnih prijemnih ispita iz matematike na Beogradskom univerzitetu

SISTEMI NELINEARNIH JEDNAČINA

IZVODI ZADACI (I deo)

Konstruisati efikasan algoritam znači dati skup preciznih uputstava kako doći do rešenja zadatog problema Algoritmi se mogu opisivati:

Numerička matematika 2. kolokvij (1. srpnja 2009.)

5. Karakteristične funkcije

( ) ( ) 2 UNIVERZITET U ZENICI POLITEHNIČKI FAKULTET. Zadaci za pripremu polaganja kvalifikacionog ispita iz Matematike. 1. Riješiti jednačine: 4

radni nerecenzirani materijal za predavanja

Elektrotehnički fakultet univerziteta u Beogradu 26. jun Katedra za Računarsku tehniku i informatiku

MJERA I INTEGRAL završni ispit 4. srpnja (Knjige, bilježnice, dodatni papiri i kalkulatori nisu dozvoljeni!)

POTPUNO RIJEŠENIH ZADATAKA PRIRUČNIK ZA SAMOSTALNO UČENJE

Trigonometrijske funkcije

Matematika 1 - vježbe. 11. prosinca 2015.

Transcript:

Sortiraje podataka

Sortiraje izborom Sortiraje izborom (Selectio( Sort) ) je vrlo jedostava algoritam sortiraja Algoritam: u listi se añe ajmaji elemet i o mijeja mjesto s prvim elemetom liste, postupak se poavlja za listu od druge do zadje pozicije itd,, u svakom koraku je lista koja se sortira kraća a za jeda elemet Primjer: 7 3 5 8 4 9 6 3 5 7 8 4 9 6 5 7 8 4 3 9 6 3 7 8 4 5 9 6 3 4 8 7 5 9 6 3 4 5 7 8 9 6 3 4 5 6 8 9 7 3 4 5 6 7 9 8 3 4 5 6 7 8 9

Zapis algoritma: ulaz je esortiraa lista a,,, a, izlaz je sortiraa lista. za i,,,, - radi korake 5. mi i 3. za j i,.., radi korak 4 4. ako je a j < a mi mi j 5. zamjei(a i, a mi ) Koraci, i 5 se poavljaju - puta, koraci 3 i 4 se u prvom prolazu obavljaju - puta, u drugom -,,, bez obzira a ulazi iz podataka. Jedii korak čiji broj poavljaja se mijeja oviso o ulazom izu podataka je korak 4. Najgori slučaj je da se korak 4 obavlja u svakom prolazu. Složeost problema je dakle: ( ) T max() c * c * i c * c * (c ) i c c * Dakle složeost u ajgorem slučaju je Θ( ) 3

U ajboljem slučaju, korak 4 se e obavi ijedom (lista je već sortiraa) Tada je kostata uz sumu maja ego u ajgorem slučaju, ali je ukupa broj operacija ista fukcija od, pa je dakle i u ajboljem slučaju složeost algoritma Θ( ) Iz toga slijedi da je i prosječa složeost algoritma Θ( ) 4

Sortiraje zamjeom (Exchage Sort) ) algoritam: a prvi elemet emet iza se usporeñuje sa svakim iza sebe,, kada k se aiñe a maji elemet,, oi o zamjee mjesta i astave se usporeñivati preostali elemeti s ovim prvim elemetom. Nako prvog prolaza a prvom mjestu je ajmaji elemet. Postupak se poavlja za drugi, itd Primjer: 7 3 5 8 4 9 6 3 7 5 8 4 9 6 7 5 3 8 4 9 6 do kraja iza se e añe maji 7 5 3 8 4 9 6 5 7 3 8 4 9 6 3 7 5 8 4 9 6 7 5 8 4 3 9 6 5 7 8 4 3 9 6 4 7 8 5 3 9 6 3 7 8 5 4 9 6 3 5 8 7 4 9 6 3 4 8 7 5 9 6 5

3 4 7 8 5 9 6 3 4 5 8 7 9 6 3 4 5 7 8 9 6 3 4 5 6 8 9 7 3 4 5 6 7 9 8 3 4 5 6 7 8 9 Zapis algoritma: ulaz je esortiraa lista a,,, a, izlaz je sortiraa lista. za i,.., - radi korake i 3. za j i,,, radi korak 3 3. ako je a i > a j oda zamjei (a i, a j ) Složeost algoritma: vajska petlja se izvrši i - puta, uutarja u prvom prolazu - puta, u drugom -, Najgori slučaj: uvijek se izvrši i zamjea u koraku 3 Tmax() c *( -) c *i c *( -) c Dakle složeost je Θ( ) i * ( ) 6

U ajboljem slučaju iti jedom ema zamjee mjesta u koraku 3, što zači i da je kostata uz sumu maja ego u ajgorem slučaju, ali je ovisost o istog oblika, što zači i da je i ajbolja složeost Θ( ) To aravo zači i da je i prosječa složeost Θ( ) 7

Sortiraje umetajem Sortiraje umetajem (Isertio( Sort) ) se vrlo često koristi ako broj elemeata u izu ije prevelik Algoritam: početa lista se dijeli a dva dijela, prvi već sortira i drugi koji treba sortirati. Na početku je u prvom dijelu samo prvi elemet. U svakom koraku se uzima prvi elemet iz drugog dijela liste i umeće e se u odgovarajuće e mjesto u prvom dijelu liste. Elemeti sortiraog dijela liste usporeñuju se od zadjeg prema prvom Primjer: 7 3 5 8 4 9 6 uzme se 3 3 7 5 8 4 9 6 uzme se 5, usporedi s 7, 3 3 5 7 8 4 9 6 uzme se, usporedi s 7, 5, 3 3 5 7 8 4 9 6 uzme se 8, usporedi s 7, e pomiče e se 3 5 7 8 4 9 6 sad ide 4, usporedi s 8, 7, 5, 3 3 4 5 7 8 9 6 sad ide, usporedi se s 8, 7, 5, 4, 3, 3 4 5 7 8 9 6 9 se usporedi s 8 i e pomiče 3 4 5 7 8 9 6 6 se usporedi s 9, 8, 7, 5 3 4 5 6 7 8 9 8

Zapis algoritma: ulaz je esortiraa lista a,,, a, izlaz je sortiraa lista. izvrši i korake -4 4 za j,,,. izvrši i korak 3 za i,,, j-j 3. ako je a i > a j zamjei(a i, a j ) Složeost algoritma: korak se uvijek izvrši i - puta, koraci i 3 se u prvom prolazu izvrše e jedom, pa dvaput,,, sve do - puta Najgori slučaj je obruto sortiraa lista kada se u svakom koraku moraju zamijeiti elemeti: Tmax() c *( -) c *i c *( -) c i * ( ) Dakle složeost je Θ( ) Najbolji slučaj je kad ema zamjea elemeata, pa je kostata uz sumu maja, ali je opet složeost Θ( ) Pa i ovdje vrijedi da je prosječa složeost Θ( ) 9

Mjehuričasto sortiraje (Bubble Sort) prolazi se redom po elemetima liste i svaki se usporeñuje sa svojim s sljedbeikom, ako je veći i zamjee mjesta, time je a kraju prvog prolaza listom a zadjem mjestu ajveći i elemet, postupak se poavlja za listu skraćeu za zadju poziciju Primjer: 7 3 5 8 4 9 6. i. elemet mijejaju m mjesta 3 7 5 8 4 9 6. i 3. elemet mijejaju mjesta 3 5 7 8 4 9 6 3. <-> < > 4. 3 5 7 8 4 9 6 sad mjesta mijejaju 5. i 6. 3 5 7 4 8 9 6 6. <-> < > 7. 3 5 7 4 8 9 6 8. <-> < > 9. 3 5 7 4 8 6 9. prolaz: kreće e se od početka, kraća a lista 3 5 7 4 8 6 9 4. <-> < > 5. 3 5 4 7 8 6 9 5. <-> < > 6. 3 5 4 7 8 6 9 7. <-> < > 8. 3 5 4 7 6 8 9 3. prolaz: izova a kraćoj listi 0

3 5 4 7 6 8 9 3. <-> < > 4. 3 4 5 7 6 8 9 4. <-> < > 5. 3 4 5 7 6 8 9 6. <-> < > 7. 3 4 5 6 7 8 9 ovi prolaz 3 4 5 6 7 8 9 ovi prolaz 3 4 5 6 7 8 9 još 3. puta prolazi listu, iako je sortiraa Zapis algoritma: ulaz je esortiraa lista a,,, a, izlaz je sortiraa lista. poavljaj korake -3 3 za i,,-. poavljaj korak 3. za j,,, -i 3. ako je a j > a j oda zamjei(a j, a j ) Složeost algoritma: korak. se uvijek poavlja - puta, u prvom prolazi se koraci. i 3. poavljaju - puta, pa -, itd. Najgori slučaj: u svakom koraku se vrši i zamjea, ajbolji slučaj je kad ema ijede zamjee; u oba slučaja isti je broj provjera i ovisost o, tj.. i asimptotska ovisost je ista: T pros () c *( -) i c *i c *( -) c * ( ) Θ( )

U primjeru je algoritam izvršio io svih osam koraka iako je sortiraje bilo gotovo ako pet koraka, tj,, već u šestom koraku ije bilo ijede zamjee mjesta Poboljšaje algoritma: provjerava se da li je bilo zamjee u tekućem em koraku, ako ije, lista je već sortiraa i algoritam završava ava

Sortiraje spajajem Sortiraje spajajem (Merge( Sort) ) je algoritam sortiraja čija je složeost maja od kvadrate O(*lg ) Strategija podijeli-pa pa-vladaj Primjer: (9,, 4, 6, 8,, 7, 5) podijeli se a dvije liste (9,, 4, 6) (8,,, 7, 5) podijeli se a liste podijeli i se a liste (9, ) (4, 6) (8, ) (7, 5) podijeli a po liste (9) () (4) (6) (8) ()( (7) (5) spajaje (, 9) (4, 6) (, 8) (5, 7) spajaje spajaje (, 4, 6, 9) (, 5, 7, 8) spajaje (,, 4, 5, 6, 7, 8, 9) 3

Algoritam sortiraja spajajem: ulaz je lista a,,, a, izlaz sortiraa lista. podijeli listu a dva jedaka dijela. sortiraj listu a,,, a / 3. sortiraj listu a /,,, a 4. spoji liste a,,, a / i a /,,, a Algoritam spajaja dvije sortirae liste u jedu sortirau listu: ulaz su dvije sortirae liste b,,, b k i c,,, c l, izlaz je sortiraa lista a,,, a kl. i, j. poavljaj korak 3 sve dok je i k i j l 3. ako je b i < c j oda a ij- b i, ii, iače e a ij- c j, jj 4. poavljaj korak 5 sve dok je i k 5. a ij- b i, ii 6. poavljaj korak 7 sve dok je j l 7. a ij- c j, jj 4

Složeost algoritma spajaja: korak. se obavlja jedom, za svaki elemet e u listama izvršit it će e se jeda od blokova aredbi iz koraka 3 ili koraka 5 ili koraka a 7, koji svi imaju istu kostatu složeost koja se može e odozgo ograičiti iti Najgori i ajbolji slučaj zahtijevaju isti broj operacija, pa su jihove složeosti iste, kao i prosječa složeost: T pros c (k l)*c (k l)*c 3 c (k l)(c c 3 ) T pros O(k l) Složeost algoritma sortiraja spajajem: za sve istace problema, složeost je ista (ajbolji slučaj ajgori slučaj prosječi slučaj) T pros () * T pros (/) T pros (spajaje / /) * T pros (/) d * d Rekurzija: t * t / d * d Uvodi se supstitucija: s t s t * t d * d * t d * d * s d * d 5

Oduzme se jdba za - čla od jdbe za -ti čla: s 3 * s - * s - - * d Oduzme se izraz za - čla pomože s dva od izraza za -ti čla: s 5 * s - - 8 * s - 4 * s -3 Dobivea je homogea rekurziva jdba, čija karakterističa jdba x 3 5 * x 8 * x - 4 0 ima dvostruki korije x, i x 3, pa je opće e rješeje eje s C * C * * C 3 * Iz čega slijedi: t C * C * * log C 3 Što zači i da je prosječa složeost algoritma O(*lg ) Nedostatak ovog algoritma sortiraja: potrebo je dodato polje 6

Sortiraje pomoću u hrpe Sortiraje pomoću u hrpe (Heap( Sort) ) se zasiva a svojstvima posebog apstraktog tipa podataka - hrpi Potpuo biaro stablo T je hrpa (Heap( Heap) ) ako su ispujei uvjeti: - čvorovi od T su ozačei podacima ekog tipa za koje je defiira totali ureñaj - eka je i bilo koji čvor od T. Tada je ozaka od i maja ili jedaka od ozake bilo kojeg djeteta od i miimala hrpa ali može e biti isto tako: - eka je i bilo koji čvor od T. Tada je ozaka od i veća a ili jedaka od ozake bilo kojeg djeteta od i maksimala hrpa Uzlazo sortiraje koje koristi miimalu hrpu zahtjeva dodati memorijski prostor za spremaje sortirae liste, pa je bolje za taj slučaj upotrijebiti maksimalu hrpu Aalogo, za silazo sortiraje je bolje upotrijebiti miimalu hrpu jer e zahtjeva dodati memorijski prostor za spremaje elemeata sortirae liste 7

Algoritam: od ulaze liste elemeata se kreira hrpa u kojoj je vrijedost v roditelja veća a od vrijedosti djece (maksimala hrpa), pa će e u joj u korijeu biti ajveći i elemet Novi se elemet dodaje u ajlijevije slobodo mjesto a posljedjoj razii stabla,, te se usporeñuje jegova vrijedost s vrijedošću u roditelja, ako je ovi elemet veći, zamjejuje mjesto s roditeljem. Zatim m se usporeñuje vrijedost ovog elemeta koji je sad a pretposljedjoj razii s jegovim treutim roditeljem i ako je ovi elemet veći, opet im se zamjejuju mjesta, itd.. sve s dok se a ekoj razii e añe roditelj koji je veći i od ovog elemeta ili ovi elemet postae korije stabla Primjer: 7 3 5 8 4 9 6 7 7 7 8 / / \ / \ / \ 3 3 5 3 5 7 5 / / \ 3 8

8 8 9 / \ / \ / \ 7 5 7 5 8 5 / \ / / \ / \ / \ / \ 3 4 3 4 7 3 4 / 9 / \ 8 5 / \ / \ 7 3 4 / \ 6 9

Efikasa i jedostava izvedba hrpe je oa pomoću u polja. Ako se korije stavi u elemet polja s ideksom i elemeti se slažu u po raziama, tada će čvor hrpe a poziciji i imati lijevo dijete a i poziciji, a deso a i Algoritam pujeja hrpe: ulazi podaci su hrpa H s elemetima h,,, h i elemet x, a izlaz je hrpa H H s elemeata. stavi x u polje a poziciju h[], i. dok je i > i dok je h[i] ] > h[i/] radi korak 3 3. zamjei(h[i],h[ ],h[i/]), i i/ Složeost algoritma: broj elemeata u hrpi je, jer je hrpa potpuo biaro stablo, jea visia je log. Algoritam zamjejuje elemet s elemetom prethode razie, pa se koraci i 3 poavljaju ajviše e log puta Slijedi da je složeost u ajgorem slučaju T max () c c * log O(lg ) Najbolji slučaj: dodai elemet odmah maji od svog roditelja: T mi () c c O() Prosječa slučaj: pretpostavlja se da je jedako vjerojato da će ovododai elemet završiti a svakoj od razii stabla, tada je ta vjerojatost jedaka /log, pa je složeost 0

T pros c ( ) c * (log log log c i ) * i * c O (lg ) c log * c * log * (log ) algoritam sortiraja pomoću u hrpe: korije, koji je ajveći i elemet u hrpi, se zamjei s posljedjim elemetom u polju i broj elemeata hrpe se smaji za jeda,, te se elemet koji je sad u korijeu usporeñuje i zamjejuje,, kad je potrebo, sa svojim potomcima sve dok se opet e izgradi hrpa, a a posljedjoj poziciji u polju je zapisa a ajveći i elemet Primjer: pražjeje hrpe iz prethodog primjera 9 / \ 8 5 9 ide a zadje mjesto, 6 u korije, / \ / \ preuredi se u hrpu 7 3 4 / \ 6

/ 8 9 / \ 7 5 8 ide a predzadje mjesto, u korije, / \ / \ preuredi se u hrpu 6 3 4 7 8, 9 / \ 6 5 7 ide va, u korije, / \ / \ preuredi se u hrpu 3 4 6 7, 8, 9 / \ 3 5 6 ide va, 4 u korije, / \ / preuredi se u hrpu 4

5 6, 7, 8, 9 / \ 3 4 5 ide va, u korije, / \ preuredi se u hrpu 4 5, 6, 7, 8, 9 / \ 3 4 ide va, v u korije, / preuredi edi se u hrpu 3 4, 5, 6, 7, 8, 9 / \ 3 ide va, u korije 3, 4, 5, 6, 7, 8, 9 / ide va, ostaje koji ide va u zadjem koraku,, 3, 4, 5, 6, 7, 8, 9 3

Algoritam pražjeja hrpe: ulaz je hrpa H s elemetima h,,, h, izlaz je hrpa H H dobivea od H izbacivajem korijea. zamjei(h[],h[]), izbaci h[], i. radi korake 3 i 4 sve dok je *i i h[i] ] < max(h[* (h[*i],h[*i]) 3. ako je h[*i] ] > h[*i] zamjei(h[i],h[* ],h[*i]),]), i* *i 4. iače e zamjei(h[i],h[* ],h[*i]), i* *i Složeost algoritma: algoritam mijeja promatrai elemet s oim a sljedećoj razii, pa se koraci 4 mogu pooviti ajviše e log puta T max () c c log O(lg ) U ajboljem slučaju je prebačei ei elemet dobar korije, pa je T mi () c c O() Prosječa slučaj: jedako je vjerojato da će e prebačei ei elemet završiti a bilo kojoj razii, pa je rezultat isti kao kod pujeja hrpe pros () O(lg ) T pros 4

Potpui algoritam sortiraja pomoću u hrpe: ulaz je lista a,,, a, izlaz je sortiraa lista. za i,,, radi korak. zovi algoritam pujeja hrpe za elemet a i 3. za i,,, radi korak 4 4. zovi algoritam pražjeja hrpe Složeost algoritma: za elemeata u listi, svi koraci se izvršavaju puta, složeosti za korake i 4 su odreñee raije T c max c c ( ) ( d i d c ( d * * log d i d ) * T pujeje max * log ( e i) * d e ( i) i u e ( e T ) * * log pražjeje max ( i) * log i) * * log e O ( * e * lg ) Složeost za prosječi slučaj za ubacivaje i pražjeje hrpe su iste kao za ajgori slučaj, pa je i ovdje prosječa složeost O(*lg ) 5

6 6 Slo Složeost za ajbolji slu eost za ajbolji slučaj aj ) ( )* ( ) ( ) ( ) ( mi mi mi O e d c e d c i T i T c T i i i pujeje i pražjeje

Algoritam brzog sortiraja Algoritam brzog sortiraja (Quick( Sort) ) je ajbrži i algoritam za sortiraje, koji u prosjeku treba Θ( lg ) ) operacija o usporeñivaja za sortiraje iza duljie To je algoritam strategije podijeli-pa pa-vladaj, koji dijeli iz u dva podiza tako da izabere poseba elemet pivot (stožer) i oda preuredi iz tako da se svi elemeti maji od pivota prebace a pozicije prije jega, a svi veći i se alaze iza pivot elemeta, ako ovog koraka pivot se alazi a mjestu a kojem mora biti u sortiraom raom izu Postupak se rekurzivo poavlja za ta dva podiza (maji i veći i od pivota),, sve s dok se e doñe do podiza od elemetae Algoritam brzog sortiraja usporeñuje elemete u izu pa spada u algoritme sortiraja usporeñivajem rezultat je pokušaja ubrzavaja faze spajaja u algoritmu sortiraja spajajem (Merge( Sort); ovdje je spajaje u potpuosti izbjeguto, jer ako što su elemeti u podizovima sortirai,, zbog z ureñeosti polja,, svi su elemeti iz drugog podiza veći i od svakog elemeta iz prvog podiza Izvedba algoritma ovisi o izboru pivot (stožer) elemeta: ajjedostavija varijata uzima prvi elemet za pivot, o o se može e odrediti a bilo koji ači koji se može izračuati u O() vremeu 7

Razmotrimo slučaj kad je pivot prvi elemet u izu. Za premještaje elemeata iza potreba su dva kursora, prvi je iicira a drugi elemet u izu u i raste, a drugi a zadji i pada Kreće e se s prvim kursorom koji se pomiče e sve dok se e añe elemet veći i od pivota, tada se kreće e od drugog kursora koji se pomiče e dok se e añe elemet maji od kursora Zamijee se mjesta ta dva elemeta i astavlja se tražeje od prvog kursora Pretraživaje završava ava kad je prvi kursor iza drugoga, tada drugi kursor pokazuje a poziciju a kojoj će e u sortiraom izu biti pivot elemet, pa se zamijee mjesta tog elemeta i pivot elemeta Nako toga se poavlja postupak a dva podiza: : za elemete prije pivot elemeta i oe iza pivot elemeta Primjer: 7 3 5 8 4 9 6, pivot je 7 Kreće e se od početka, prvi elemet veći i od 7 je 8, sa stražje strae prvi maji je 6, pa im se zamijee mjesta: 7 3 5 6 4 9 8 Sljedeći i elemet veći i od 7 je 9, odostraga prvi maji je. No drugi kursor je ispred prvog pa ovaj korak završava. ava. Niz se dijeli a dva dijela, od početka do drugog kursora, te od prvog kursora do kraja 8

7 3 5 6 4 9 8 Pivot i elemet a koji pokazuje drugi kursor zamijee mjesta, kako k su svi elemeti u prvoj listi maji od jega, o je a pravom mjestu i više e ga se e dira 3 5 6 4 7 9 8 Poavljaje postupka a prvom podizu: : pivot je, sprijeda prvi veći i od jega je 3, straga prvi maji je 5 3 6 4 7 9 8 Nastavljamo: sprijeda 5, straga, ali je prvi kursor iza drugoga, pa se mijejaju pivot i elemet a koji pokazuje drugi kursor 5 3 6 4 7 9 8 Drugi podiz (zadja elemeta): pivot je 9, prvi kursor e alazi veći i od jega ego prelazi drugi kursor, pa 9 i 8 mijejaju mjesta: 5 3 6 4 7 8 9 Jedii preostao iz je u sredii: pivot je 5, sprijeda alazimo 6, straga 4 5 3 4 6 7 8 9 Sprijeda alazimo 6 i sad je prvi kursor iza drugog: 5 i 4 zamijee mjesta 9

4 3 5 6 7 8 9 Zadji korak: iz od elemeta, pivot je 4, pretraga sprijeda e alazi veći i od jega ego se prvi kursor pomiče e iza drugog: 3 4 5 6 7 8 9 Algoritam brzog sortiraja: ulaz je lista a, a i kursori i (početak) i j (kraj),a izlaz sortiraa lista. k i, l j. sve dok je k < l radi korake 3 5 3. dok je (a i > a k ) k k 4. dok je (a i < a l ) l l-l 5. ako je k < l, zamjei(a k, a l ) 6. ako je l > i zamjei(a i, a l ) 7. ako je l > i quicksort(a, i, l-) l 8. ako je k < j quicksort(a, k, j) Najgori slučaj za ovaj algoritam: već sortiraa lista i lista sortiraa obrutim rasporedom. Tada se u svakom koraku lista dijeli a podliste od jedog i - elemeata 30

Korak. ima kostatu složeost, koraci od. do 5. (za iz duljie ) imaju složeost c c *, a korak 6. ima kostatu složeost T max () T max (-) d * d rekurzija t t - d * d Oduzme se izraz za - čla od izraza za -ti čla i sredi t * t - t - d Sada se opet oduzme jdba za - čla od jdbe za -ti čla i izlazi Karakterističa jdba t 3 * t - 3 * t - t -3 x 3 3 * x 3 * x - 0 Jeda trostruki korije x,,3, pa je opće e rješeje eje rekurzije t C * C * * C 3 * * t C C * C 3 * Dakle, u ajgorem slučaju, složeost je O( ) 3

Najbolji slučaj: kada je izabrai pivot sredja vrijedost elemeata dijela liste l koji se promatra, pa se lista dijeli a dva dijela jedake duljie T mi () * T mi (/) d * d Tj. rekurzija koja se rješava je t * t / d * d Uvodi se supstitucija s t s t * t d * d * t d * d * s d * d Izraz za - čla se oduzme od izraza za -ti čla s 3 * s - * s - d * - Od ovog izraza se oduzme izraz za - čla pomože s s 5 * s - 8 * s - 4 * s -3 3

Karakterističa jdba x 3 5 * x 8 * x - 4 0 ima jedostruki korije x i dvostruki korije x,3, pa je opće e rješeje eje rekurzije s C * C * C 3 * * s C C * C 3 * * Povratkom iz supstitucije izlazi t C C * C 3 * * log Pa je dakle složeost u ajboljem slučaju O(*lg ) Složeost prosječog slučaja: pretpostavlja se da je svaki raspored elemeata liste jedako vjerojata. Brojat ćemo samo operacije usporeñivaja ad elemetima polja (broj svih ostalih operacija ovisi o broju tih operacija, pa oe odreñuju složeost algoritma). Takoñer se pretpostavlja da su svi elemeti u polju različiti, iti, te da je jedaka vjerojatost izbora svakog elemeta za pivota Gleda se segmet liste a m,,, a p, kako su za izbor pivot elemeta svi elemeti iz segmeta jedako vjerojati, prolaz algoritma uz izbor ekog a i za pivota dijeli segmet a dva dijela a m,,, a mi- i a mi,,, a p s vjerojatošću u /(p-m) Složeost u prosječom slučaju (algoritam radi koraka prije rekurzivog poziva) je dakle T pros ( ) * i ( T pros ( i ) T pros ( i)) 33

Rješava se rekurzija t i Kad se jdba pomoži i s i srede dvije sume, slijedi * ( t i t i ) * t * i 0 t i * ( ) Od gorjeg izraza se oduzme izraz za -, ako sreñivaja slijedi * t ( ) * t - * Dijeljejem izraza s () slijedi t Rekurzivim uvrštavajem ovog izraza slijedi izraz t 34

t t * i 3 i Pozato je da vrijedi: i 3 i l( ) l Uvrštavajem i sreñivajem slijedi t * ( ) * [l[ l() l k] tj. T pros O( * lg ) ovaj algoritam je stvaro efikasa i isplatljiv za sortiraje dugačkih izova elemeata i uz pažljiv izbor pivot elemeta Izvedba algoritma brzog sortiraja je zato složeija od recimo sortiraja umetajem, što zači i da su kostate koje se javljaju u izrazu vremeske složeosti zato veće e od kostati za sortiraje umetajem. Zbog toga će e za kratke izove sortiraje umetajem biti brže 35