On-line učionica

6. jun 2012.

Sortiranje nizova

Filed under: C posle Pascal-a,Programiranje — jelena100janovic @ 10:44 am

Sortirati niz znači poređati njegove članove u nekom (rastućem, opadajućem, strogo rastućem, strogo opadajućem) poretku. Brojevi se sortiraju u odnosu na relaciju < i >, a znaci i reči u odnosu na engleski alfabet, zahvaljujući činjenici da su već predstavljeni pomoću ASCII koda u obliku brojeva.

Da bismo sortirali niz, potrebna nam je pomoćna funkcija „razmeni“, koju smo već radili, a sada vidimo i zašto.😉 Dalje razmišljanje kako sortirati niz može teći u nekoliko pravaca. Za svaku od ideja je moguće izbrojati koliko će se operacija poređenja dva elementa izvršiti, pa prema tome imamo nekoliko vrsta sortiranja. Postoji čitava nauka o sistemima za sortiranje nizova, a mi ćemo koristiti najjednostavniji – sortiranje izborom.

Njegova je ideja ta da moramo uporediti svaka dva člana niza i, ukoliko nisu sortirani u željenom poretku, zameniti im mesta. Za to koristimo dve for petlje – jednu sa brojačem i, a drugu sa brojačem j. Oba brojača uzimaju vrednosti indeksa članova niza koji želimo da sortiramo, da bi ih uporedili i, eventualno, razmenili. Pošto nema smisla da upoređujemo element niza sam sa sobom, brojač i ide od 0 do n-1 (ako je n dimenzija niza), a brojač j (da ne bi ponavljali poređenja) od i+1 do n.

Pre nego što pređemo na kod programa, pogledajte sjajan članak mog kolege Siniše Bubonje.

Sada ćemo napisati kompletan kod programa za sortiranje niza. On sadrži četiri funkcije: za unos niza, ispisivanje niza, pomoćnu funkciju razmeni i funkciju sortiraj.

Ovaj program daje sledeći izlaz:

Kako radi ovaj program?

Evo pogledajmo baš ovaj primer:

2 4 5 3 1

Počinjemo od i=0, j=1..4 – poredimo prvi član sa svim ostalim i kada naiđemo na manji, zamenimo (prvi manji od 2 je 1):

1 4 5 3 2

Sada je i=1, j=2..4 – sada će doći do dve zamene – sa 3 i sa 2:

1 3 5 4 2

1 2 5 4 3

Sledeći „krug“ ima i=2, j=3,4 – ponovo dolazi do dve zamene:

1 2 4 5 3

1 2 3 5 4

Na kraju još jedna zamena, jer je 5>4:

1 2 3 4 5

Niz je sortiran.

Na kraju, preporučujem da pogledate ostale odlične članke vezane za vrste sortiranja. Napomenula bih da su kodovi tamo pisani u C++-u, pa se zato malo razlikuju od ovih naših😉 Eto zadatka za moje učenike: napišite programe nalik gornjem za sve vrste sortiranja u C-u. Obavezno koristite funkcije!

p.s. Obećavam neke lepe ocene za one koji prvi korektno napišu program i znaju zašto su napisali to što su napisali😉

3 komentara »

  1. Хвала колегинице🙂 ! Велика ми је част што сте поставили линк према мојим чланцима на своме блогу. Редовно пратим све што напишете и све ми се без изузетка веома допада! Велики поздрав!

    Komentar od Синиша Бубоња — 6. jun 2012. @ 10:18 pm | Odgovor

    • Drago mi je da se slažete i izvinite što nisam pitala pre nego što sam linkovala.🙂 Članci su vam odlični – prosto nisam znala šta tačno da dopišem. Nadam se da sam se lepo snašla i da će učenici zaraditi neke lepe ocene na osnovu ovoga.😉

      Komentar od jelena100janovic — 7. jun 2012. @ 9:13 am | Odgovor

      • Биће то лијепо, желим дјеци пуно успјеха! Не морате питати😉 ! Драго ми је да некоме користи.

        Komentar od Синиша Бубоња — 7. jun 2012. @ 4:27 pm


RSS feed for comments on this post. TrackBack URI

Ostavite odgovor

Popunite detalje ispod ili pritisnite na ikonicu da biste se prijavili:

WordPress.com logo

Komentarišet koristeći svoj WordPress.com nalog. Odjavite se / Promeni )

Slika na Tviteru

Komentarišet koristeći svoj Twitter nalog. Odjavite se / Promeni )

Fejsbukova fotografija

Komentarišet koristeći svoj Facebook nalog. Odjavite se / Promeni )

Google+ photo

Komentarišet koristeći svoj Google+ nalog. Odjavite se / Promeni )

Povezivanje sa %s

Create a free website or blog at WordPress.com.

%d bloggers like this: