190 likes | 339 Views
Sortiranje niza. Sortiranje podataka. postupak kojim želimo bilo koju kombinaciju ulaznih podataka postaviti u ulazni ili silazni redoslijed postoje razni algoritmi koji se međusobno razlikuju po složenosti i brzini brzina algoritma je važna kad moramo sortirati veliki broj podataka.
E N D
Sortiranje podataka • postupak kojim želimo bilo koju kombinaciju ulaznih podataka postaviti u ulazni ili silazni redoslijed • postoje razni algoritmi koji se međusobno razlikuju po složenosti i brzini • brzina algoritma je važna kad moramo sortirati veliki broj podataka
Zadatak • osobe poredati po visini od najniže do najviše
O čemu ovisi algoritam? • računalo može u jednom koraku uspoređivati samo dva broja • logično je krenuti od nekog algoritma kojeg već poznajemo • koristiti algoritam za traženje najmanje vrijednosti
1. korak • Pronađemo najmanju vrijednost (najnižu osobu) • Zamijenimo mjesta prve i najniže osobe
2. korak • Postupak ponavljamo na rasponu od druge do zadnje osobe
3. korak • Postupak ponavljamo na rasponu od treće do zadnje osobe
4. korak • Postupak ponavljamo na rasponu od četvrte do zadnje osobe
5. korak • Postupak ponavljamo na rasponu od pete do zadnje osobe
6. korak • Postupak ponavljamo na rasponu od šeste do zadnje osobe
7. korak • Postupak ponavljamo na rasponu od sedme do zadnje osobe
Rezultat • osobe su poredane po veličini
Algoritam • kod traženja najmanje vrijednosti pamtimo njeno redno mjesto • nakon pregledanog intervala zamjenjujemo mjesta najmanjeg i onog na početku intervala • početak intervala nam se u svakom koraku pomiče za jedno mjesto
Kod • 1. korak: {traženje najmanjeg na intervalu od 1. do N.} imin:=1; for j:=2 to N do begin if v[j]<v[imin] thenimin:=j; end; {zamjena najmanjeg i prvog} t:=v[imin]; v[imin]:=v[1]; v[1]:=t;
Kod • 2. korak: {traženje najmanjeg na intervalu od 2. do N.} imin:=2; for j:=3 to N do begin if v[j]<v[imin] thenimin:=j; end; t:=v[imin]; v[imin]:=v[2]; v[2]:=t;
Kod • 3. korak: {traženje najmanjeg na intervalu od 3. do N.} imin:=3; for j:=4 to N do begin if v[j]<v[imin] thenimin:=j; end; t:=v[imin]; v[imin]:=v[3]; v[3]:=t;
Kod • uočavamo promjene početnih vrijednosti varijable imin • uočavamo promjene početka intervala pretraživanja • uočavamo da koraka ima N-1 • uvodimo vanjsku petlju
Kod for pocetak:=1 to N-1 do begin imin:=pocetak; for j:=pocetak+1 to N do begin if v[j]<v[imin] thenimin:=j; end; t:=v[imin]; v[imin]:=v[pocetak]; v[pocetak]:=t; end;
Analiza algoritma • algoritam se uvijek izvodi u istom broju koraka • neosjetljiv je na stupanj uređenosti početnog niza