Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

qsort
WWW:

Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
ahri
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 19. 11. 2003. (23:16:07)
Postovi: (193)16
Sarma = la pohva - posuda
= 7 - 0

PostPostano: 23:51 pet, 20. 2. 2004    Naslov: qsort Citirajte i odgovorite

evo, danas sam nekome tipkao kilogram teksta u vezi qsorta, pa ako ce kome trebat...
(original na hr.org.fer)


> Molio bi nekoga da rijesi ovaj zadatak:
>
> Ilustrirati i opisati osnovne rekurzivne korake uzlaznog Quicksorta za
> podatke : 12 2 21 18 50 41 19 20 7 15 3
>
> Kao stozer izabire se prvi clan !!!

[ !12! 2 21 18 50 41 19 20 7 15 3 ]

sa [] cu oznacit koji dio niza gledas trenutno, sa _ onog koji je stavljen na mjesto, a sa ! stozer.

Uzmes prvi clan kao stozer.
Cilj ti ga je postaviti u niz tako da su svi lijevo od njega manji ili jednaki njemu, a svi desno veci ili jednaki. tada ces moci pozvati sort za lijevu i desnu polovicu, te ce nakon toga niz biti sortiran.
dakle, stozer je 12.
ides slijeva, trazis veci element - dodjes do 21
ides zdesna, trazis manji element - dodjes do 3
zamjenis

[ !12! 2 3 18 50 41 19 20 7 15 21 ]

ides dalje sljeva, dodjes na 18
ides dalje zdesna, dodjes na 7
zamjenis

[ !12! 2 3 7 50 41 19 20 18 15 21 ]

ides dalje sljeva, dodjes do 50
ides dalje zdesna, dodjes na 7.
ali sad su se "prekrizili" pokazivaci slijeva i zdesna, pa umjesto da ih zamjenimo, zamjenimo stozer i pokazivac zdesna (7).

[ 7 2 3 _12_ 50 41 19 20 18 15 21 ]

sad pozovemo sort za lijevu i desnu polovicu
prvo lijevu

[ !7! 2 3 ] 12 50 41 19 20 18 15 21


desni pokazivac pokaze na 3, lijevi ode na kraj niza.
opet su se prekrizili, zamjenimo stozer i 3.

[ 3 2 _7_ ] 12 50 41 19 20 18 15 21

pozovemo za lijevu i desnu polovicu (desne nema :)

[ !3! 2 ] _7_ 12 50 41 19 20 18 15 21

zamjenimo 3 i 2.

[ 2 _3_ ] 7 12 50 41 19 20 18 15 21

sad se rekurzija vraca tamo do kad nam je 12 bio stozer


2 3 7 12 [ !50! 41 19 20 18 15 21 ]

desni pokazivac nadje 12, ali lijevi ode do kraja.
dakle, zamjenimo 50 i 21.

2 3 7 12 [ 21 41 19 20 18 15 _50_ ]

pozovemo za obje polovice, ovaj put opet nema desne.

2 3 7 12 [ !21! 41 19 20 18 15 ] 50

lijevi pokazivac nadje 41, desni nadje 15. to zamjenimo

2 3 7 12 [ !21! 15 19 20 18 41 ] 50
lijevi nadje 41, desni nadje 18. ali prekrizili su se, pa zamjenimo 18 i 21.

2 3 7 12 [ 18 15 19 20 _21_ 41 ] 50

pozovemo lijevu i desnu polovicu

2 3 7 12 [ !18! 15 19 20 ] 21 41 50

slijeva nadjemo 19, zdesna 15. opet su se prekrizli, pa zamjenimo 18 i 15.

2 3 7 12 [ 15 _18_ 19 20 ] 21 41 50

pozovemo za lijevu polovicu (ovdje se moze napraviti uvjet da se ne poziva ako je samo jedan element).

2 3 7 12 [ !15! ] 18 19 20 21 41 50


lijevi predje, desni nadje samog sebe. dakle, zamjeni se sam sa sobom. (ili se uopce ne zamjeni, ovisi o implementaciji)

2 3 7 12 15 [ !18! 19 ] 20 21 41 50

tu se opet 18 zamjeni sam sa sobom.

sad se vraca rekurzija u "negdje davno" :)
2 3 7 12 15 18 19 20 21 [ !41! ] 50

opet se 41 zamjeni sam sa sobom.

rekurzija se vrati skroz na pocetak i to je to.
evo, danas sam nekome tipkao kilogram teksta u vezi qsorta, pa ako ce kome trebat...
(original na hr.org.fer)


> Molio bi nekoga da rijesi ovaj zadatak:
>
> Ilustrirati i opisati osnovne rekurzivne korake uzlaznog Quicksorta za
> podatke : 12 2 21 18 50 41 19 20 7 15 3
>
> Kao stozer izabire se prvi clan !!!

[ !12! 2 21 18 50 41 19 20 7 15 3 ]

sa [] cu oznacit koji dio niza gledas trenutno, sa _ onog koji je stavljen na mjesto, a sa ! stozer.

Uzmes prvi clan kao stozer.
Cilj ti ga je postaviti u niz tako da su svi lijevo od njega manji ili jednaki njemu, a svi desno veci ili jednaki. tada ces moci pozvati sort za lijevu i desnu polovicu, te ce nakon toga niz biti sortiran.
dakle, stozer je 12.
ides slijeva, trazis veci element - dodjes do 21
ides zdesna, trazis manji element - dodjes do 3
zamjenis

[ !12! 2 3 18 50 41 19 20 7 15 21 ]

ides dalje sljeva, dodjes na 18
ides dalje zdesna, dodjes na 7
zamjenis

[ !12! 2 3 7 50 41 19 20 18 15 21 ]

ides dalje sljeva, dodjes do 50
ides dalje zdesna, dodjes na 7.
ali sad su se "prekrizili" pokazivaci slijeva i zdesna, pa umjesto da ih zamjenimo, zamjenimo stozer i pokazivac zdesna (7).

[ 7 2 3 _12_ 50 41 19 20 18 15 21 ]

sad pozovemo sort za lijevu i desnu polovicu
prvo lijevu

[ !7! 2 3 ] 12 50 41 19 20 18 15 21


desni pokazivac pokaze na 3, lijevi ode na kraj niza.
opet su se prekrizili, zamjenimo stozer i 3.

[ 3 2 _7_ ] 12 50 41 19 20 18 15 21

pozovemo za lijevu i desnu polovicu (desne nema :)

[ !3! 2 ] _7_ 12 50 41 19 20 18 15 21

zamjenimo 3 i 2.

[ 2 _3_ ] 7 12 50 41 19 20 18 15 21

sad se rekurzija vraca tamo do kad nam je 12 bio stozer


2 3 7 12 [ !50! 41 19 20 18 15 21 ]

desni pokazivac nadje 12, ali lijevi ode do kraja.
dakle, zamjenimo 50 i 21.

2 3 7 12 [ 21 41 19 20 18 15 _50_ ]

pozovemo za obje polovice, ovaj put opet nema desne.

2 3 7 12 [ !21! 41 19 20 18 15 ] 50

lijevi pokazivac nadje 41, desni nadje 15. to zamjenimo

2 3 7 12 [ !21! 15 19 20 18 41 ] 50
lijevi nadje 41, desni nadje 18. ali prekrizili su se, pa zamjenimo 18 i 21.

2 3 7 12 [ 18 15 19 20 _21_ 41 ] 50

pozovemo lijevu i desnu polovicu

2 3 7 12 [ !18! 15 19 20 ] 21 41 50

slijeva nadjemo 19, zdesna 15. opet su se prekrizli, pa zamjenimo 18 i 15.

2 3 7 12 [ 15 _18_ 19 20 ] 21 41 50

pozovemo za lijevu polovicu (ovdje se moze napraviti uvjet da se ne poziva ako je samo jedan element).

2 3 7 12 [ !15! ] 18 19 20 21 41 50


lijevi predje, desni nadje samog sebe. dakle, zamjeni se sam sa sobom. (ili se uopce ne zamjeni, ovisi o implementaciji)

2 3 7 12 15 [ !18! 19 ] 20 21 41 50

tu se opet 18 zamjeni sam sa sobom.

sad se vraca rekurzija u "negdje davno" :)
2 3 7 12 15 18 19 20 21 [ !41! ] 50

opet se 41 zamjeni sam sa sobom.

rekurzija se vrati skroz na pocetak i to je to.



_________________
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2 Vremenska zona: GMT + 01:00.
Stranica 1 / 1.

 
Forum(o)Bir:  
Ne možete otvarati nove teme.
Ne možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan