1 sortiranje

Upload: sara-kukic

Post on 03-Apr-2018

223 views

Category:

Documents


0 download

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);

    }