sortiranje niza
Post on 08-Jan-2016
81 Views
Preview:
DESCRIPTION
TRANSCRIPT
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
V[1] V[2] V[3] V[4] V[5] V[6] V[7] V[8]
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
V[1] V[2] V[3] V[4] V[5] V[6] V[7] V[8]
2. korak
•Postupak ponavljamo na rasponu od druge do zadnje osobe
V[1] V[2] V[3] V[4] V[5] V[6] V[7] V[8]
3. korak
•Postupak ponavljamo na rasponu od treće do zadnje osobe
V[1] V[2] V[3] V[4] V[5] V[6] V[7] V[8]
4. korak
•Postupak ponavljamo na rasponu od četvrte do zadnje osobe
V[1] V[2] V[3] V[4] V[5] V[6] V[7] V[8]
5. korak
•Postupak ponavljamo na rasponu od pete do zadnje osobe
V[1] V[2] V[3] V[4] V[5] V[6] V[7] V[8]
6. korak
•Postupak ponavljamo na rasponu od šeste do zadnje osobe
V[1] V[2] V[3] V[4] V[5] V[6] V[7] V[8]
7. korak
•Postupak ponavljamo na rasponu od sedme do zadnje osobe
V[1] V[2] V[3] V[4] V[5] V[6] V[7] V[8]
Rezultat
•osobe su poredane po veličini
V[1] V[2] V[3] V[4] V[5] V[6] V[7] V[8]
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] then imin:=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] then imin:=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] then imin:=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
Kodfor pocetak:=1 to N-1 do begin imin:=pocetak; for j:=pocetak+1 to N do begin if v[j]<v[imin] then imin:=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
top related