eh evo ovako, malo sam razmisljao i palo mi je na pamet sledece:
-moraces da 2 puta sortiras tvoj niz...
prvi put ga sortiras uz pomoc bublesort, quick sort ili koji vec volis
algoritam (da napomenem za buble sort, ako je prvi veci od
drugog zamenjuju se mesta itd... i sve tako do kraja niza..)da bi bilo
malo jasnije evo bublesort algoritma
[primer za qbasic, s obzirom
da radis u paskalu]:
Code:
DO WHILE (ey < maksimumx) AND NOT fsort
ey = ey + 1
FOR i = 0 TO maksimumx - ey - 1
fsort = 1
IF redx!(i) > redx!(i + 1) THEN
SWAP redx!(i), redx!(i + 1)
fsort = 0
END IF
NEXT i
LOOP
eh sad funkcija swap, ti zamenjuje sledece:
Bez pointera.
------------
Code:
int promenljiva1 = 5, promenljiva2 = 6,temp;
temp = promenljiva2;
promenljiva2 = promenljiva1;
promenljiva1 = temp;
Sa pointerima.
-------------
Code:
int promenljiva1 = 5, promenljiva2 = 6, temp;
int *pn;
pn = &promenljiva1;
temp = *pn;
*pn = promenljiva2;
promenljiva2 = temp;
E sada drugo sortiranje
-----------------------
Da objasnim sta se u stvari desilo...
Imao si neki niz:
a[0] = 5;
a[1] = -5;
a[2] = 3.5;
a[3] = 0;
sortirani niz je us pomoc bublesorta:
a[0] = -5;
a[1] = 0;
a[2] = 3.5;
a[3] = 5;
Znaci:
clan 1 2 3 4
vrednost 1 2 3 4
a tebi treba a[0] >= a[1] <= a[2]....
clan 1 2 3 4
vrednost 2 1 4 3
Mozes sada jednostavno da zamenjujes clanovima mesta, nesto kao buble sort
samo da ti inkrementacija bude veca za jedan...razumes? dobro idemo polako:
znaci treba da menja mesta prvom i drugom clanu, pa zatim trecem i
cetvrtom itd...
kapiras?
napravi petlju...nemam sada vremena da ti i to radim, moram da
ucim redove... ma istrazuj...
Budi pozdravljen.