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