Strukture podataka i algoritmi Drugo predavanje Sortiranje listi



![Algoritam sortiranja umetanjem 1. za j 2 do dužina [A] 2. var A[ j Algoritam sortiranja umetanjem 1. za j 2 do dužina [A] 2. var A[ j](https://slidetodoc.com/presentation_image_h2/3e0efdf2105e45556c61000d066b6f41/image-4.jpg)

![Inicijalizacija v. Invarijante algoritma Istinitost prije djelovanja Trivijalno sortirano Za j=2 A[1, …, j-1] Inicijalizacija v. Invarijante algoritma Istinitost prije djelovanja Trivijalno sortirano Za j=2 A[1, …, j-1]](https://slidetodoc.com/presentation_image_h2/3e0efdf2105e45556c61000d066b6f41/image-6.jpg)











- Slides: 17
Strukture podataka i algoritmi Drugo predavanje Sortiranje listi
Sortiranje
Sortiranje liste
Algoritam sortiranja umetanjem 1. za j 2 do dužina [A] 2. var A[ j ] 3. >>>umetni A[ j ] u sekvencu A[1. . j-1]<<< 4. i j -1 5. dok je i > 0 i A[ i ] > var 6. A[ i+1 ] A[ i ] 7. i i-1 8. A[ i+1 ] var
Invarijante algoritma (postupka) v Istinitost prije djelovanja (početka) Ø Ispravnost prvog koraka Ø Trivijalno sortirano Ø Za j=2 A[1, …, j-1] ima samo jedan element v Ako je postupak valjan prije koraka iteracije valjan je i u idućem koraku (indukcija) v Nakon konačnog broja valjanih instrukcija dobivamo ispravan rezultat Ø konačnost petlje
Inicijalizacija v. Invarijante algoritma Istinitost prije djelovanja Trivijalno sortirano Za j=2 A[1, …, j-1] ima samo jedan element
Postupak v. Invarijante algoritma vanjska petlja unutarnja petlja uspoređivanje posmak
Završetak zadatka v. Invarijante algoritma Uređena lista
Analiza zadatka 1. 2. 3. 4. 5. 6. 7. 8. za j 2 do dužina [A] var A[ j ] >umetni A[ j ] u sekv. A[1. . j-1]< i j-1 dok je i>0 i A[ i ] > var A[ i+1 ] A[ i ] i i-1 A[ i+1 ] var C 1*(n-1) C 2*(n-1) 0*(n-1) C 4*(n-1) C 5*Sj za j=2. . n C 6*S(j-1) za j=2. . n C 7*S(j-1) za j=2. . n C 8*(n-1)
Zadaća q Zbroji sve doprinose iz prethodne analize i izrazi vrijeme potrebno za izvršenje algoritma kao funkciju od n (broja članova liste koju treba sortirati) u najpovoljnijem i najnepovoljnijem slučaju rasporeda elemenata u listi! q Odredi vodeću potenciju u tom razvoju za oba slučaja! q Rezultat pošalji na adresu: dandroic@phy. hr
Funkcija brzine rasta Funkcionalnu ovisnost broja postupaka o vrijednosti “n” broja elemenata u listi izražavamo najistaknutijom potencijom od “n” u razvoju analize algoritma q(n) µ n 2 npr. za naš primjer – Najnepovoljniji slučaj – Najvjerojatniji slučaj – diskusija
Sortiranje Odabirom Elementa u listi po zadanom kriteriju q Napravi shematski program u apstraktnom kodu i izračunaj efikasnost algoritma sortiranja ako je ideja postupka traženje najvećeg elementa u nesortiranom dijelu (pod) liste q Odredi vodeću potenciju u tom razvoju za oba slučaja (povoljniji i nepovoljniji) ! q Rezultat pošalji na adresu: dandroic@phy. hr
“Podjeli pa vladaj” princip Osnovna karakteristika rekurzivnost Podjela problema Savladavanje pod problema; ponekad i na najizravniji način Ponavljanje postupka Rješenje Mogućnost algoritmiziranja problema rekurzivnim postupkom i prednosti nad drugim očiglednijim idejama rješavanja problema
Sortiranje umetanjem listi (Merge Sort a-d)
Sortiranje umetanjem listi (Merge Sort e-i)
Sortiranje umetanjem listi MERGE( A, p, q, r) 1) n 1 q - p +1 2) n 2 r - q 3) napravi polja L[1, . . n 1+1], 4) 5) 6) 7) 8) 9) R[1, . . n 2+1] za i 1 do n 1 L[i] A[p+i-1] za j 1 do n 2 R[j] A[q+j] L [ n+1 ] µ R [ n+1 ] µ 10) i 1 11) j 1 12) za k p do r 13) ako je L[ i ] £ R[ j ] 14) tada A [ k ] L [ i ] 15) i i+1 16) inače A [ k ] R [ j ] 17) j j+1
Analiza (MERGE) algoritma sortiranja umetanjem listi q Odredi funkciju q(n) - vodeću potenciju broja operacija u ovisnosti o broju elemenata u nesortiranoj listi odredi invarijante algoritma diskutiraj probleme q Rezultat pošalji na adresu: dandroic@phy. hr