asp sortovi

34
3.4.2007 3.4.2007 Algoritmi i strukture podataka Algoritmi i strukture podataka Postupci sortiranja Postupci sortiranja

Upload: nemanja231995

Post on 15-Nov-2015

44 views

Category:

Documents


2 download

DESCRIPTION

Soritanje

TRANSCRIPT

  • 3.4.20073.4.2007

    Algoritmi i strukture podatakaAlgoritmi i strukture podataka

    Postupci sortiranjaPostupci sortiranja

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 2 / 34

    Algoritmi

    na predavanjima:z sortiranje biranjem (selection sort)z bubble sortz sortiranje umetanjem (insertion sort)z Shellov sortz mergesortz quick sortz sortiranje pomou gomile (heap sort) - kasnije!

    ostali:z radix sort Sortovi

    http://www.solidware.com/sort/

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 3 / 34Algoritmi i strukture podataka, 2006/07. 3.4.2007

    Sortiranje biranjem (selection sort)Sortiranje biranjem (selection sort)

    pronai najmanji element niza i zamijeni ga s prvim elementom niza ponavljaj s ostatkom niza, smanjujui nesortirani dio

    66 44 11 88 77 55 33 2211 44 66 88 77 55 33 2211 22 66 88 77 55 33 4411 22 33 88 77 55 66 4411 22 33 44 77 55 66 8811 22 33 44 55 77 66 8811 22 33 44 55 66 77 8811 22 33 44 55 66 77 8811 22 33 44 55 66 77 88

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 4 / 34

    Algoritam i sloAlgoritam i sloenostenost

    izvedba - 2 petlje:z vanjska odreuje granice sortiranog dijela nizaz unutarnja trai najmanji element u nizu

    Algoritmi i strukture podataka, 2006/07. 3.4.2007

    void SelectionSort (int A [], int N) {

    int i, j, min;

    for (i = 0; i < N; i++) {

    min = i;

    for (j = i+1; j < N; j++) {

    if (A[j] < A[min]) min = j;

    }

    Zamijeni(&A[i], &A[min]);

    }

    }

    O(nO(n--ii--1)1)

    1

    0

    ( 1)n

    i

    O n i

    =

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 5 / 34

    Analiza vremena izvoenja

    dominira usporedba; zamjena ima manje vrijeme izvoenja ne ovisi o poetnom redoslijedu, nego o broju

    elemenata O(n2) - otprilike n2/2 usporedbi i n zamjena u prosjenom i u

    najgorem sluajuz nije bitno bri kad su ulazni elementi blizu svojih mjesta

    ubrzanje: z sortirati odjednom s obje strane

    najgori sluaj: naopako sortiran niz

    Algoritmi i strukture podataka, 2006/07.

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 6 / 34

    BubbleBubble--sortsort

    ideja: zamjena susjednih elemenata ako nisu u dobrom redosljeduideja: zamjena susjednih elemenata ako nisu u dobrom redosljeduzz kreni od pokreni od poetka niza prema kraju etka niza prema kraju zz zamijeni 2 elementa ako je prvi vezamijeni 2 elementa ako je prvi vei od drugogi od drugogzz ubrzanje: ako u prolasku kroz cijeli niz nije bilo zamjene, niz ubrzanje: ako u prolasku kroz cijeli niz nije bilo zamjene, niz je sortiranje sortiran

    Algoritmi i strukture podataka, 2006/07.

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 7 / 34

    Primjer sortiranja bubblePrimjer sortiranja bubble--sortomsortom

    Algoritmi i strukture podataka, 2006/07.

    6 4 1 8 7 5 3 24 6 1 8 7 5 3 24 1 6 8 7 5 3 24 1 6 8 7 5 3 24 1 6 7 8 5 3 24 1 6 7 5 8 3 24 1 6 7 5 3 8 24 1 6 7 5 3 2 8

    4 1 6 7 5 3 2 81 4 6 7 5 3 2 81 4 6 7 5 3 2 81 4 6 7 5 3 2 81 4 6 5 7 3 2 81 4 6 5 3 7 2 81 4 6 5 3 2 7 8

    1 4 6 5 3 2 7 81 4 6 5 3 2 7 81 4 6 5 3 2 7 81 4 5 6 3 2 7 81 4 5 3 6 2 7 81 4 5 3 2 6 7 8

    1 4 5 3 2 6 7 81 4 5 3 2 6 7 81 4 5 3 2 6 7 81 4 3 5 2 6 7 81 4 3 2 5 6 7 8

    1 4 3 2 5 6 7 81 4 3 2 5 6 7 81 3 4 2 5 6 7 81 3 2 4 5 6 7 8

    1 3 2 4 5 6 7 81 3 2 4 5 6 7 81 2 3 4 5 6 7 8

    1 2 3 4 5 6 7 81 2 3 4 5 6 7 8

    1. prolaz 2. prolaz 3. prolaz 4. prolaz

    5. prolaz 6. prolaz 7. prolaz

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 8 / 34

    AlgoritamAlgoritam

    Algoritmi i strukture podataka, 2006/07. 3.4.2007

    void BubbleSort (int A [], int N) {

    int i, j;

    for (i = 0; i < N-1; i++) {

    for (j = 0; j < N-1-i; j++) {

    if (A[j+1] < A[j])

    Zamijeni (&A[j], &A[j+1]);

    }

    }

    }

    O(nO(n--11--i)i)

    2

    0

    ( 1)n

    i

    O n i

    =

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 9 / 34

    Poboljani bubble-sort

    ako u nekom prolazu nije bilo zamjene, niz je sortiran

    void BubbleSort (int A [], int N) {

    int i, j, BilaZamjena;

    for (i = 0, BilaZamjena = 1; BilaZamjena; i++) {

    BilaZamjena = 0;

    for (j = 0; j < N-1-i; j++) {

    if (A[j+1] < A[j]) {

    Zamijeni (&A[j], &A[j+1]);

    BilaZamjena = 1;

    }

    }

    }

    }

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 10 / 34

    Analiza vremena izvoenja

    O(n2) - otprilike n2/2 usporedbi i n2/2 zamjena u prosjenom i u najgorem sluajuz kad su ulazni elementi blizu svojih mjesta moe se brzo zavritiz najgori sluaj: naopako sortiran nizz najbolji sluaj: ve sortiran niz

    poloaj elemenata bitan za uinkovitostz veliki elementi na poetku niza nisu problem brzo idu na kraj - zeeviz mali elementi na kraju niza su probem polako idu prema vrhu - kornjae

    poboljanja: z koktel-sort (cocktail sort) alternira: velike na kraj, male na poetak z sort eljanjem (comb sort) usporeuje udaljenije elemente

    Algoritmi i strukture podataka, 2006/07. 3.4.2007

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 11 / 34Algoritmi i strukture podataka, 2006/07. 3.4.2007

    Sortiranje umetanjem (insertion sort)

    ideja: postoje dva dijela niza: sortirana i nesortiranaz u svakom koraku sortirani dio se proiruje tako da se u njega na ispravno

    mjesto ubaci prvi element iz nesortiranog dijela niza tako se (obino) sortiraju karte u kartakim igrama

    x xx nesortiranonesortirano

    xxx nesortiranonesortirano

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 12 / 34

    Primjer sortiranja umetanjemPrimjer sortiranja umetanjem

    Algoritmi i strukture podataka, 2006/07. 3.4.2007

    66 44 11 88 77 55 33 2244 66 11 88 77 55 33 2211 44 66 88 77 55 33 2211 44 66 88 77 55 33 2211 44 66 77 88 55 33 2211 44 55 66 77 88 33 2211 33 44 55 66 77 88 2211 22 33 44 55 66 77 88

    66 44 11 88 77 55 33 22

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 13 / 34

    Algoritam i sloenost

    izvedba - 2 petlje:z vanjska slui za odreivenje granice sortiranog dijelaz unutarnja ubacuje element u sortirani niz i pomie ostale elemente

    Algoritmi i strukture podataka, 2006/07. 3.4.2007

    void InsertionSort (int A [], int N) {

    int i, j;

    int pom;

    for (i = 1; i < N; i++) {

    pom = A[i];

    for (j = i; j >= 1 && A[j-1] > pom; j--)

    A[j] = A[j-1];

    A[j] = pom;

    }

    }

    O(i)O(i)

    1

    0

    ( ( ))n

    i

    O O i

    =

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 14 / 34

    Analiza vremena izvoenja

    O(n2) - otprilike n2/4 usporedbi i n2/4 zamjena u prosjenom i 2 puta vie u najgorem sluaju

    kad su ulazni elementi blizu svojih mjesta, brzo zavrava sort je stabilan najgori sluaj: naopako sortiran niz najbolji sluaj: ve sortiran niz

    Algoritmi i strukture podataka, 2006/07. 3.4.2007

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 15 / 34Algoritmi i strukture podataka, 2006/07. 3.4.2007

    Shellov sort (Shell sort)

    najstariji brzi algoritam, modificirani sornajstariji brzi algoritam, modificirani sort umetanjemt umetanjemzz autor: Donald Shellautor: Donald Shell

    ideja:ideja:zz za za kk--sortirano polje A vrijedi sortirano polje A vrijedi A[i] A[i] A [i + k], A [i + k], i, i+k i, i+k indeksiindeksizz ako je polje ako je polje kk--sortirano i dodatno se sortirano i dodatno se tt--sortira (sortira (t

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 16 / 34

    Shellov sort Shellov sort primjerprimjer

    Algoritmi i strukture podataka, 2006/07. 3.4.2007

    6 4 1 8 7 5 3 26 4 1 8 7 5 3 26 4 1 8 7 5 3 26 4 1 2 7 5 3 8

    1 4 6 2 7 5 3 81 2 6 4 7 5 3 8 1 2 6 4 7 5 3 81 2 6 4 7 5 3 8 1 2 3 4 6 5 7 8 1 2 3 4 6 5 7 8

    1 2 3 4 6 5 7 8 1 2 3 4 6 5 7 8 1 2 3 4 6 5 7 8 1 2 3 4 6 5 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 81 2 3 4 5 6 7 8

    korak = 4 korak = 2 korak = 1

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 17 / 34

    AlgoritamAlgoritam

    Algoritmi i strukture podataka, 2006/07. 3.4.2007

    void ShellSort (int A [], int N) {

    int i, j, korak, pom;

    for (korak = N / 2; korak > 0; korak /= 2) {

    for (i = korak; i < N; i++) {

    pom = A [i];

    for (j = i; j >= korak && A[j-korak] > pom; j -= korak) {

    A [j] = A [j - korak];

    }

    A [j] = pom;

    }

    }

    }

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 18 / 34Algoritmi i strukture podataka, 2006/07. 3.4.2007

    Analiza sloenosti

    prosjeprosjeno vrijeme izvoenja je veno vrijeme izvoenja je ve dugo otvoreni (nerijedugo otvoreni (nerijeeni) problemeni) problemzz najgori slunajgori sluaj aj O(nO(n22))

    Hibbardov slijed: {1, 3, 7, Hibbardov slijed: {1, 3, 7, , 2, 2kk --1} rezultira najgorim slu1} rezultira najgorim sluajem ajem O(nO(n3/23/2))zz prosjeprosjeno no O(nO(n5/45/4)) utvreno je simulacijom utvreno je simulacijom; nitko to nije uspio dokazati!; nitko to nije uspio dokazati!

    Sedgwickov slijed: {1, 5, 19, 41, 109,Sedgwickov slijed: {1, 5, 19, 41, 109,}, odnosno }, odnosno 9*49*4ii -- 9*29*2ii + 1+ 1 alternira s alternira s 44ii -- 3*23*2ii +1+1zz najgori slunajgori sluaj aj O(nO(n4/34/3)) , a prosje, a prosjeno no O(nO(n7/67/6))

    ne zna se postoji li bolji slijedne zna se postoji li bolji slijed jednostavan algoritam, a krajnje slojednostavan algoritam, a krajnje sloena analiza sloena analiza sloenostienosti algoritam je dobar za umjerenu kolialgoritam je dobar za umjerenu koliinu ulaznih podataka (deseci tisuinu ulaznih podataka (deseci tisua)a)

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 19 / 34

    Usporedba sortova sa sloUsporedba sortova sa sloenoenou u O(nO(n22))

    Algoritmi i strukture podataka, 2006/07. 3.4.2007

    BubbleBubble

    SelectionSelection

    InsertionInsertion

    ShellShell

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 20 / 34

    MergesortMergesort

    koristi se strategija "podijeli pa vladaj" uz rekurzijukoristi se strategija "podijeli pa vladaj" uz rekurziju autor: John von Neumann, 1945. godineautor: John von Neumann, 1945. godine ideja algoritmaideja algoritma::zz nesortirani niz podijeli se na dva niza podjednake velinesortirani niz podijeli se na dva niza podjednake veliineinezz svaki podniz sortira se rekurzivno, dok se ne dobije niz od 1 elsvaki podniz sortira se rekurzivno, dok se ne dobije niz od 1 elementaementa

    -- taj niz od jednog elementa je sortiran!taj niz od jednog elementa je sortiran!

    zz spoje se dva sortirana podniza u sortirani nizspoje se dva sortirana podniza u sortirani niz-- na temelju dva sortirana polja (A i B) puni se trena temelju dva sortirana polja (A i B) puni se tree (C)e (C)

    grananjem nastane grananjem nastane loglog22 nn razina, a u svakoj od razina obavlja se razina, a u svakoj od razina obavlja se O(n)O(n) poslaposlazz trajanje je trajanje je O(n logO(n log22 n)n)

    Algoritmi i strukture podataka, 2006/07. 3.4.2007

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 21 / 34

    Primjer sortiranjaPrimjer sortiranja

    Algoritmi i strukture podataka, 2006/07. 3.4.2007

    3131 2424 4747 11 66 7878 1212 6565

    3131 2424 4747 11

    3131 2424

    3131 2424

    2424 3131

    4747 11

    4747 11

    11 4747

    11 2424 3131 3737

    66 7878 1212 6565

    66 7878 1212 6565

    66 7878 1212 6565

    66 7878 1212 6565

    66 1212 6565 7878

    11 66 1212 2424 3131 4747 6565 7878

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 22 / 34

    AlgoritamAlgoritam

    vjevjeba: napiba: napiite funkciju ite funkciju MergeMergezz funkcija spaja lijevu i desnu sortiranu polovicu u sortirani nizfunkcija spaja lijevu i desnu sortiranu polovicu u sortirani niz

    Algoritmi i strukture podataka, 2006/07. 3.4.2007

    void MSort(int A [], int PomPolje[], int lijevo, int desno) {

    int sredina;

    if (lijevo < desno) {

    sredina = lijevo + (desno - lijevo) / 2;

    MSort (A, PomPolje, lijevo, sredina);

    MSort (A, PomPolje, sredina + 1, desno);

    Merge (A, PomPolje, lijevo, sredina + 1, desno);

    }

    }

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 23 / 34

    NapomeneNapomene

    cijena brcijena breg sortiranja: memorijaeg sortiranja: memorijazz stvara se pomostvara se pomono polje!no polje!

    rijetko se koristi za sortiranje u sredirijetko se koristi za sortiranje u sredinjoj memoriji njoj memoriji zz povepoveani su zahtjevi za dodatnom memorijom i kopiranjemani su zahtjevi za dodatnom memorijom i kopiranjem

    to je kljuto je kljuni algoritam za sortiranje na vanjskoj memorijini algoritam za sortiranje na vanjskoj memoriji ponaponaanje u prosjeanje u prosjenom i najgorem slunom i najgorem sluaju: aju: O(nlogn)O(nlogn) ne radi nine radi nita brta bre ako je ulazni niz vee ako je ulazni niz ve sortiran!sortiran!

    Algoritmi i strukture podataka, 2006/07. 3.4.2007

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 24 / 34Algoritmi i strukture podataka, 2006/07. 3.4.2007

    QuicksortQuicksort

    do sada najbrdo sada najbri poznati algoritam za sortiranjei poznati algoritam za sortiranje rekurzija: "podijeli pa vladajrekurzija: "podijeli pa vladaj

    zz http://euler.slu.edu/~goldwasser/demos/quicksort/http://euler.slu.edu/~goldwasser/demos/quicksort/zz http://www.cs.queensu.ca/home/cisc121/2004f/lecturenotes/malamb/http://www.cs.queensu.ca/home/cisc121/2004f/lecturenotes/malamb/SortingDemos/QuickSortDemo.htmlSortingDemos/QuickSortDemo.html

    4 koraka 4 koraka quicksort (S)quicksort (S)zz ako je broj ako je broj lanova polja lanova polja SS jednak 0 ili 1, povratak u pozivni programjednak 0 ili 1, povratak u pozivni program

    zz odabrati bilo koji odabrati bilo koji lan lan vv u polju u polju S.S. To je stoTo je stoer (er (pivotpivot))zz podijeli preostale podijeli preostale lanove polja lanove polja S, S S, S \\ {{vv}} u dva odvojena skupa:u dva odvojena skupa:

    -- SS11 = { x = { x S S \\ {{vv} } || x x vv} } (sve (sve to je manje od stoto je manje od stoera, preseli lijevo)era, preseli lijevo)-- SS22 = { x = { x S S \\ {{vv} } || x x vv} } (sve (sve to je veto je vee od stoe od stoera, preseli desno)era, preseli desno)

    zz vrati niz sastavljen od vrati niz sastavljen od {quicksort (S{quicksort (S11), ), vv, quicksort (S, quicksort (S22)})}

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 25 / 34Algoritmi i strukture podataka, 2006/07. 3.4.2007

    Izbor stoIzbor stoeraera

    nije jednoznanije jednoznano odreenno odreen nije jednoznanije jednoznano odreeno niti no odreeno niti to uto uiniti s initi s lanovima polja jednakim lanovima polja jednakim

    stostoerueruzz to postaje pitanje realizacije algoritmato postaje pitanje realizacije algoritmazz dio dobre izvedbe je udio dobre izvedbe je uinkovito rjeinkovito rjeenje ovog pitanjaenje ovog pitanja

    -- Weiss: "Data Structures and Algorithm Analysis in C". Weiss: "Data Structures and Algorithm Analysis in C".

    mogumogue metode izbora stoe metode izbora stoera:era:zz medijan od 3 (prvi element, zadnji element, element na polovici)medijan od 3 (prvi element, zadnji element, element na polovici)

    -- pri izboru medijana, ti se elementi odmah sortirajupri izboru medijana, ti se elementi odmah sortirajuzz druge mogudruge mogunosti: slunosti: sluajni element, prvi element, zadnji elementajni element, prvi element, zadnji elementzz npr. niz: 8 1 4 9 6 3 5 2 7 0npr. niz: 8 1 4 9 6 3 5 2 7 0

    -- pivot = med3 (8, 6, 0) = 6pivot = med3 (8, 6, 0) = 6

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 26 / 34

    Primjer sortiranja quicksortomPrimjer sortiranja quicksortom

    Algoritmi i strukture podataka, 2006/07. 3.4.2007

    8 1 4 9 6 3 5 2 7 0

    ^ ^ ^

    0 1 4 9 6 3 5 2 7 8

    0 1 4 9 7 3 5 2 6 8

    i->

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 27 / 34

    SloSloenost algoritmaenost algoritma

    prosjeprosjeno vrijeme izvoenja je no vrijeme izvoenja je O(n log n)O(n log n)zz sortiranje je vrlo brzo, uglavnom zbog visokooptimirane unutrasortiranje je vrlo brzo, uglavnom zbog visokooptimirane unutranje petljenje petlje

    najgori slunajgori sluaj je aj je O(nO(n22))zz uz krivi odabir stouz krivi odabir stoera, dobiva se era, dobiva se nn particija i za svaku je vrijeme izvoenja particija i za svaku je vrijeme izvoenja

    O(n)O(n)zz momoe se postie se postii da vjerojatnost da takav slui da vjerojatnost da takav sluaj nastupi eksponencijalno aj nastupi eksponencijalno

    padapada

    Algoritmi i strukture podataka, 2006/07. 3.4.2007

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 28 / 34

    Usporedba sortova sa sloUsporedba sortova sa sloenoenou u O(nlogn)O(nlogn)

    Algoritmi i strukture podataka, 2006/07. 3.4.2007

    HeapHeap

    MergeMerge

    QuickQuick

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 29 / 34Algoritmi i strukture podataka, 2006/07. 3.4.2007

    Postupci sortiranjaPostupci sortiranja

    sortiranje oko milijun podataka nije u praksi rijetkosortiranje oko milijun podataka nije u praksi rijetko ako jedno obavljanje programske petlje traje 1 ako jedno obavljanje programske petlje traje 1 s:s:zz klasiklasini sort bi trajao reda velini sort bi trajao reda veliine 10ine 1066 s (odnosno vis (odnosno vie od 11 dana)e od 11 dana)zz quick sort bi trajao reda veliquick sort bi trajao reda veliine 20 s. ine 20 s.

    ne treba uvijek trane treba uvijek traiti rjeiti rjeenje u kupnji brenje u kupnji brih i skupljih raih i skupljih raunala!unala!zz momoe se isplatiti investicija u razvitak i primjena boljih algoritae se isplatiti investicija u razvitak i primjena boljih algoritamama

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 30 / 34Algoritmi i strukture podataka, 2006/07. 3.4.2007

    Indirektno sortiranjeIndirektno sortiranje

    za sortiranje velikih struktura (npr. matiza sortiranje velikih struktura (npr. matini broj studenta, prezime, ni broj studenta, prezime, ime, adresa, upisani predmeti i ocjene), nema smisla obavljati ime, adresa, upisani predmeti i ocjene), nema smisla obavljati mnogo zamjena velikog broja podatakamnogo zamjena velikog broja podatakazz ako se podaci sortiraju npr. po matiako se podaci sortiraju npr. po matinom broju, tada se izdvoje u posebno nom broju, tada se izdvoje u posebno

    polje matipolje matini brojevi s pripadnim pokazivani brojevi s pripadnim pokazivaima na ostale podatkeima na ostale podatkezz sortira se (bilo kojim od postupaka) samo takvo izdvojeno poljesortira se (bilo kojim od postupaka) samo takvo izdvojeno polje

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 31 / 34

    UsporedbaUsporedba

    Algoritmi i strukture podataka, 2006/07. 3.4.2007

    naziv najbolje prosjeno najgore stabilan metodaselection sort O(n2) O(n2) O(n2) ne biranjeinsertion sort O(n) O(n2) O(n2) da umetanjebubble sort O(n) - O(n2) da zamjenashell sort - - O(n3/2) ne umetanjemerge sort O(nlogn) O(nlogn) O(nlogn) da spajanjequick sort O(nlogn) O(nlogn) O(n2) ne podjelaheap sort O(nlogn) O(nlogn) O(nlogn) ne biranjecocktail sort O(n) - O(n2) da zamjenacomb sort O(nlogn) O(nlogn) O(nlogn) da zamjena

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 32 / 34

    Animacije algoritama

    http://www.geocities.com/SiliconValley/Network/1854/Sort1.html http://www.solidware.com/sort/ http://www.cs.queensu.ca/~cisc121/2004f/lecturenotes/malamb/Sort

    ingDemos/SelectionSortDemo.html http://www.cs.hope.edu/~dershem/ccaa/animator/Animator.html http://cg.scs.carleton.ca/~morin/misc/sortalg/ http://homepages.dcc.ufmg.br/~dorgival/applets/SortingPoints/Sortin

    gPoints.html http://www.cis.fiu.edu/~weiss/Shellsort.html http://www.educypedia.be/education/mathematicsjavasorting.htm

    Algoritmi i strukture podataka, 2006/07. 3.4.2007

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 33 / 34Algoritmi i strukture podataka, 2006/07. 3.4.2007

    Zadatak za vjeZadatak za vjebubu

    Napisati program koji Napisati program koji e u cjelobrojnom polju od e u cjelobrojnom polju od nn lanova pronalanova pronai i kk--ti najveti najvei i lan polja.lan polja.

    a)a) UUitano polje sortirati po padajuitano polje sortirati po padajuim vrijednostima i ispisati im vrijednostima i ispisati lan s lan s indeksom indeksom kk--11..

    b)b) UUitati itati kk lanova polja, sortirati ih po padajulanova polja, sortirati ih po padajuim vrijednostima. Uim vrijednostima. Uitavati itavati preostale preostale lanove polja. Ako je pojedini lanove polja. Ako je pojedini lan manji od onoga s indeksom lan manji od onoga s indeksom kk--11, ignorirati ga, ako je ve, ignorirati ga, ako je vei umetnuti ga na pravo mjesto, a izbaciti i umetnuti ga na pravo mjesto, a izbaciti lan lan polja koji bi sad imao indeks polja koji bi sad imao indeks kk..

    c)c) Varirati postupke sortiranja te odrediti pripadna apriorna vremeVarirati postupke sortiranja te odrediti pripadna apriorna vremena i na i izmjeriti aposteriorna vremena izvoenjaizmjeriti aposteriorna vremena izvoenja..

    Odrediti apriorna vremena trajanja, a izmjeriti aposteriorna vreOdrediti apriorna vremena trajanja, a izmjeriti aposteriorna vremena. mena. Varirati postupak sortiranja.Varirati postupak sortiranja.

  • Algoritmi i strukture podataka, 2006/07. 3.4.2007 34 / 34Algoritmi i strukture podataka, 2006/07. 3.4.2007

    Zadatak za vjeZadatak za vjebubu

    Napisati program koji Napisati program koji e od dvije sortirane slijedne datoteke e od dvije sortirane slijedne datoteke napraviti trenapraviti treu sortiranu slijednu datoteku. u sortiranu slijednu datoteku. UpariDatotekeUpariDatoteke

    /ColorImageDict > /JPEG2000ColorACSImageDict > /JPEG2000ColorImageDict > /AntiAliasGrayImages false /CropGrayImages true /GrayImageMinResolution 300 /GrayImageMinResolutionPolicy /OK /DownsampleGrayImages true /GrayImageDownsampleType /Bicubic /GrayImageResolution 300 /GrayImageDepth -1 /GrayImageMinDownsampleDepth 2 /GrayImageDownsampleThreshold 1.50000 /EncodeGrayImages true /GrayImageFilter /DCTEncode /AutoFilterGrayImages true /GrayImageAutoFilterStrategy /JPEG /GrayACSImageDict > /GrayImageDict > /JPEG2000GrayACSImageDict > /JPEG2000GrayImageDict > /AntiAliasMonoImages false /CropMonoImages true /MonoImageMinResolution 1200 /MonoImageMinResolutionPolicy /OK /DownsampleMonoImages true /MonoImageDownsampleType /Bicubic /MonoImageResolution 1200 /MonoImageDepth -1 /MonoImageDownsampleThreshold 1.50000 /EncodeMonoImages true /MonoImageFilter /CCITTFaxEncode /MonoImageDict > /AllowPSXObjects false /CheckCompliance [ /None ] /PDFX1aCheck false /PDFX3Check false /PDFXCompliantPDFOnly false /PDFXNoTrimBoxError true /PDFXTrimBoxToMediaBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXSetBleedBoxToMediaBox true /PDFXBleedBoxToTrimBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXOutputIntentProfile () /PDFXOutputConditionIdentifier () /PDFXOutputCondition () /PDFXRegistryName () /PDFXTrapped /False

    /Description > /Namespace [ (Adobe) (Common) (1.0) ] /OtherNamespaces [ > /FormElements false /GenerateStructure true /IncludeBookmarks false /IncludeHyperlinks false /IncludeInteractive false /IncludeLayers false /IncludeProfiles true /MultimediaHandling /UseObjectSettings /Namespace [ (Adobe) (CreativeSuite) (2.0) ] /PDFXOutputIntentProfileSelector /NA /PreserveEditing true /UntaggedCMYKHandling /LeaveUntagged /UntaggedRGBHandling /LeaveUntagged /UseDocumentBleed false >> ]>> setdistillerparams> setpagedevice