1 sortiranje
TRANSCRIPT
-
7/28/2019 1 Sortiranje
1/3
Strukture podataka i algoritmi 2 dr Boban Stojanovi
1
Sortiranje
Sortiranje je proces u kome se elementi niza ili liste ureuju tako da ine rastui ili opadajui niz podataka.Rastui niz je takav da je svaki element vei od svog prethodnika, a manji od svog sledbenika. Nasuprottome, svaki element opadajueg niza je manji od svog prethodnika, a vei od svog sledbenika.
Sortiranje izborom uzastopnih minimuma Selection sort
Jedan od najjednostavnijih algoritama za sortiranje niza u rastui poredak je svakako izbor uzastopnihminimuma, poznat i kao selection sort. Ovaj algoritam ureuje niz u rastui tako to trai najmanjielement i smeta ga na poetak niza. Zatim se za ostatak niza ponavlja isti postupak, sve dok se ne doe dopodniza koji ima samo jedan element.
voidsort(inta[],intn){
inti,j,pom;
for(i=0;i
-
7/28/2019 1 Sortiranje
2/3
Strukture podataka i algoritmi 2 dr Boban Stojanovi
2
Analiziranje 4. elementa (13) 10 7 12 13 4 5 19 11 6 17
Analiziranje 5. elementa (4) i zamena sa 3. (12) 10 7 4 13 12 5 19 11 6 17
Analiziranje 6. elementa (5) i zamena sa 4. (13) 10 7 4 5 12 13 19 11 6 17
Analiziranje 7. elementa (19) 10 7 4 5 12 13 19 11 6 17
Analiziranje 8. elementa (11) 10 7 4 5 12 13 19 11 6 17
Analiziranje 9. elementa (6) i zamena sa 5. (12) 10 7 4 5 6 13 19 11 12 17
Analiziranje 10. elementa (17) 10 7 4 5 6 13 19 11 12 17
Zamena zbog postavljanja pivota na novu poziciju 6 7 4 5 10 13 19 11 12 17
Primeujemo da su po zavretku itavog postupka svi elementi manji od pivota pozicionirani sa njegoveleve strane, a svi elementi vei od pivota sa njegove desne strane. U nastavku je data funkcija podelikojaobavlja prethodno navedeni postupak:
intpodeli(inta[],intdonji,intgornji){
inti,pivot;
pivot=donji;
for(i=donji+1;i
-
7/28/2019 1 Sortiranje
3/3
Strukture podataka i algoritmi 2 dr Boban Stojanovi
3
if(donji+1==gornji){
if(a[donji]>a[gornji])zameni(a,donji,gornji);
return;}
//podniz
ima
vise
oddva
elementa
pivot=podeli(a,donji,gornji);quick(a,donji,pivot1);
quick(a,pivot+1,gornji);}
S obzirom da krajnji korisnik funkcije za sortiranje oekuje da parametri funkcije budu samo niz i duinaniza, moemo napisati funkciju koja ima ovakve parametre i koja na odgovarajui nain poziva rekurzivnufunkciju quick:
voidsort(inta[],intn){
quick(a,0,n1);
}