250 likes | 412 Views
Sortiranje niza. - metodom zamjene susjednih elemenata niza. 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 uspoređujemo po dva susjedna elementa u nizu
E N D
Sortiranje niza - metodom zamjene susjednih elemenata niza
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 • uspoređujemo po dva susjedna elementa u nizu • zamjenjujemo im mjesta ako nisu u dobrom poretku
Prvo ponavljanje - 1. korak • uspoređujemo prvu i drugu osobu • nisu u dobrom poretku pa im zamjenjujemo mjesta
2. korak • uspoređujemo drugu i treću osobu
3. korak • uspoređujemo treću i četvrtu osobu
4. korak • uspoređujemo četvrtu i petu osobu
5. korak • uspoređujemo petu i šestu osobu
Rezultat • na posljednjem je mjestu najviša osoba
Kod n:=6; for rb:=1 to 5 do begin if v[rb]>v[rb+1] then begin t:=v[rb]; v[rb]:=v[rb+1]; v[rb+1]:=t; end; end;
Drugo ponavljanje • postupak ponavljamo na rasponu od prve do pete osobe
Kod n:=6; for rb:=1 to 4 do begin if v[rb]>v[rb+1] then begin t:=v[rb]; v[rb]:=v[rb+1]; v[rb+1]:=t; end; end;
Treće ponavljanje • postupak ponavljamo na rasponu od prve do četvrte osobe
Kod n:=6; for rb:=1 to 3 do begin if v[rb]>v[rb+1] then begin t:=v[rb]; v[rb]:=v[rb+1]; v[rb+1]:=t; end; end;
Četvrto ponavljanje • postupak ponavljamo na rasponu od prve do treće osobe
Kod n:=6; for rb:=1 to 2 do begin if v[rb]>v[rb+1] then begin t:=v[rb]; v[rb]:=v[rb+1]; v[rb+1]:=t; end; end;
Peto ponavljanje • uspoređujemo prvu i drugu osobu
Kod n:=6; for rb:=1 to 1 do begin if v[rb]>v[rb+1] then begin t:=v[rb]; v[rb]:=v[rb+1]; v[rb+1]:=t; end; end;
Rezultat • osobe su poredane po veličini
KOd • očito je da se isti postupak ponavlja n-1 puta • možemo uvesti vanjsku petlju
Kod for br_pon:=1 to n-1 do begin for rb:=1 to n-br_pon do begin if v[rb]>v[rb+1] thenbegin t:=v[rb]; v[rb]:=v[rb+1]; v[rb+1]:=t; end; end; end;
Možemo li poboljšati algoritam? • u našem primjeru nakon trećeg ponavljanja niz je bio uređen • očito je da vanjska petlja ne treba biti petlja s unaprijed zadanim brojem ponavljanja već treba biti petlja s uvjetom • uvodimo logičku varijablu koja prati uređenost parova
Kod br_pon:=1; repeat sortirano:=true; for rb:=1 to n-br_pon do begin if v[rb]>v[rb+1] thenbegin t:=v[rb]; v[rb]:=v[rb+1]; v[rb+1]:=t; sortirano:=false; end; end; br_pon:=br_pon+1; untilsortirano;
Zadatak • Imena učenika u razredu treba učitati u memoriju i sortirati po abecedi.