REZIME Ovaj rad se bazira na jednom od
REZIME Ovaj rad se bazira na jednom od najvećih problema u programiranju – Neuređenosti. Ovaj naizgled komplikovan probelm je rešen primenom strogo formulisanih pravila za sortiranje nizova. Svaki od ovih pravila- Algoritama je specifičan, svaki ima svoje dobre i loše strane. Zbog različitih zahteva je stvoreno mnoštvo algoritama za sortiranje, a ovde se objašnjava njihov rad i uloga.
UVOD Algoritam sortiranja ja algoritam koji smešta elemente niza u određeni red. Najčešće korišćeni nizovi su nizovi brojeva ili cifara i slovnih karaktera. Efikasno sortiranje je neophodno za brže funkcionisanje ostalih algoritama(npr. SEARCH ili MERGE) koji zahtevaju da niz bude pravilno uređen, ili preciznije, da izlazni podaci budu u skladu sa zahtevima sledećeg algoritma. • Izlazni podaci su u neopadajućem redu (svaki element je ne manji od prethodnog) • Izlazni podaci su permutovani (premeštanje elemenata niza)
Klasifikacija Algoritmi sortiranja su najčešće klasifikovani po: 1. Kompleksnosti računanja (uslovi su najgori prosek i najbrže 2. 3. 4. 5. 6. 7. 8. računanje elemenata niza u odnosu na veličinu niza) Kopmleksnosti računanja elemenata koji se menjanu (za „in place“ algoritme) Korišćenjem memorije i drugih računarskih resursa Rekurzija (neki su rekurzivni a neki ne, dok postoje i algoritmi sa obe osobine) Stabilnost (stabilni održavaju relativni rad zapisa) Da li su upoređivački (ispituju elemente upoređujući dva elementa niza) Generalnoj metodi („Insertion“, „Exchange“, „selection“ , „merging“ itd. . . ) Prilagodljivosti (da li drugačija konfiguracija niza utiče na vreme sortiranja, I algoritmi koji poštuju ovo pravilo su “Adaptive” algoritmi. )
Buble sort Ovom metodom se porede susedni elementi niza, ako su nepravilno uređeni, razmenjuju mesta. Posle poređenja svih parova susednih elemenata, najveći od njih će "isplivati" na kraj niza. Zbog toga se I naziva – metod mehurića. Da bi se najveći broj od još nesortiranog dela niza doveo na svoje mesto treba ponoviti postupak. Ako je u nizu pet brojeva dovoljna su četiri prolaza. Prvim prolazom se poredi svih pet brojeva i najveći dolazi na petu poziciju. Pošto se sada najveći broj nalazi na kraju niza, u sledećem prolazu treba porediti samo prva četiri broja. Ovaj proces traje do poređenja dva prva broja, posle čega je niz sortiran.
Insertion Sort Metoda umetanja (Insertion Sort) je efikasno oružje programera. Svaki element se posebno posmatra i umeće na mesto među već sortirane, sve dok se svi elementi ne srede. Element se umeće na taj način što se svi veći pomeraju za jednu poziciju u desno. Metod umetanja je efikasan ako se sortira već u glavnom sortiran niz (tada teži linearnom), pošto broj poređenja i zamena zavisi od strukture ulaznih podataka.
Shell Sort Ovo je poboljšana verzija Bubble algoritma. Shell sortiranje dozvoljava zamenu međusobno udaljenih elemenata, a bazira se na ideji da se podaci preurede na takav način da, počevši od bilo kog elementa, uzimanje svakog h-tog dovodi do sortiranog niza. Ovakav niz se naziva Hsortiranim, a postepeno smanjujući vrednost za H, dolazi se do potpuno sortiranog niza. Analiza performansi ovog metoda nije jednostavna jer vrednost h i vrednosti za koje se ona umanjuje pri svakom prolazu nisu striktno utvrđene. štaviše, efikasnost zavisi od izbora ovih vrednosti, ali je prilično neosetljiv na početnu sortiranost elemenata.
Counting Sort Ovaj algoritam rešava problem sortiranja niza od ukupno n brojeva, koga čine celi brojevi iz opsega [1, m]. Ako su m i n jednaki, a na raspolaganju je dovoljna memorija, rešenje je vrlo jednostavno: for i: =1 to n do b[a[i]]: =x[i]; Algoritam se zasniva na pronalaženju broja elemenata koji imaju istu vrednost. Formira se niz Count od m elemenata gde i-ti član predstavlja broj elemenata orginalnog niza koji su manji ili jednaki od vrednosti i. Ako se vrednost 1 u orginalnom nizu pojavljuje tri, a vrednost 2 šest puta, Count[1] će imati vrednost 3, a Count[2] vrednost 3+6=9. Niz Count služi kao kontrola mesta umetanja odgovarajućeg elementa u novi niz b i to na sledeći način: kada se naiđe na vrednost 1 ona će biti smeštena na mesto Count[1], a sam a vrednost Count[1] biće dekrementirana, da bi se sledeća smestila za jedno mesto u levo, u novom nizu b. Postupak se ponavlja za svaki element niza koji se sortira, uz dekrementiranje odgovarajuće Count vrednosti.
Quick Sort ima tri faze. Uprvoj fazi se bira jedan element, takozvani pivot, a zatim se dva novonastala podskupa ulaznog skupa levo I desno od pivota preurđuju tako da levo ostanu manji elementi od pivota, a desno veći od njega. Nakon ovog koraka, pivot je sigurno na svom mestu. Algoritam zatim rekurzivno primenjuje opisanu strategiju na dva skupa levo I desno od pivota, sve dok se ne dobije sortiran niz.
ZAKLJUČAK Zaključak, na osnovu činjenica i eksperimentalno utvrđenih podataka o radu različitih algoritama me je navela na stvaranje okvirne pretpostavke o efikasnosti istih. Uporedio sam svaki algoritam koristeći isti niz neuređenih brojeva od 140 elemenata. sledi lista najefikasnijih: 1. Quick. Sort 2. Shell. Sort 3. Merge. Sort 4. Heap. Sort 5. Comb. Sort 6. Insertion. Sort 7. Selection. Sort 8. Cocktail. Sort 9. Bubble. Sort
- Slides: 11