Számok növekvő sorrendbe rendezése..

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
Qwertz76
Újonc
Újonc
Hozzászólások: 3
Csatlakozott: 2007. augusztus 15. szerda, 6:00

Számok növekvő sorrendbe rendezése..

Hozzászólás Szerző: Qwertz76 »

Szervusztok!

A Következő problémám adódott:
Van egy Mega32, ami 10 Db Mega8-al kommunikál soros porton.
Azt hogy mikor melyikkel, azt 2*DG406 serial Swich-el döntöm el.
Ez rendben is van.
Kommunikáció működik rendesen.
Minden Mega8 egy számot kűld a Mega32-nek.
A Mega32 összegyűjti, majd növekvő sorrendbe egy 64*128 Grafikus Lcd-n megjeleníti.
A Gond ott van hogy minden szép és nagyon jó, de hogyan tudom az értékeket növekvő sorrendbe rendezni?
Sorba rendezést még nem csináltam íly módon..

Ha van valami ötlet , kérlek segítsetek!
Avatar
norbi
Chipgyilok
Hozzászólások: 308
Csatlakozott: 2006. augusztus 3. csütörtök, 6:00

Hozzászólás Szerző: norbi »

Hello!

Így hírtelen a buborék rendezés jut eszembe, mindig megvizsgálod a szomszédos elemeket, s ha kell, megcseréled őket, majd kezded elölről a vizsgálatot!

Pl:

1 6 3 9 5 7

1. lépés:
Megvizsgálod, hogy az "1" v. a "6" a kissebb, mivel jó a sorrend itt, marad változatlanul. A kialakult sorrend:
1 6 3 9 5 7

2. lépés:
"6" és "3" közt vizsgálódsz, itt rossz a sorrand, meg kell forditani, így az új sorrend már:
1 3 6 9 5 7

3. lépés:
"6" ill. "9" vizsgálata, mivel itt is jó a sorrned, marad ugyanúgy, sorrend:
1 3 6 9 5 7

4. lépés:
"9" és "5" vizsgálata, itt megint meg kell cserélni, sorrend:
1 3 6 5 9 7

5. lépés:
"9" és "7" vizsgálata, megint cserélni kell, sorrend:
1 3 6 5 7 9

Ezzel véget is ért az 1. "belső" ciklus. De a példámnál még nem alakult ki a jó sorrend, ezért újra kell kezdened, itt már csak 4 lépésed lesz.
Akkor fejeződik be véglegesen, ha a cuklusok száma elére az N-1-et!!!
Kicsit macerás, de jól müködik:)
Avatar
Qwertz76
Újonc
Újonc
Hozzászólások: 3
Csatlakozott: 2007. augusztus 15. szerda, 6:00

Számok sorbarendezése!

Hozzászólás Szerző: Qwertz76 »

Nagyon köszönöm a gyors segítséget!
Majdnem jó fele kapizsgáltam....
:oops:
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Avatar
aaszabo
Tranzisztorgyógyász
Hozzászólások: 179
Csatlakozott: 2012. január 22. vasárnap, 7:00

Gyorsított buborék

Hozzászólás Szerző: aaszabo »

Ha valaki idetéved ismét, akkor egy kis gyorsítási lehetőségről még tudomást szerezhet.

A buborék rendezés hosszabb tömbökön jelentősen gyorsítható egy egyszerű trükkel.
Mindkét irányba kell végezni az összehasonlítást. Tehát az elejéről indulva ha a baloldali a nagyobb akkor cserélek. Elérek a végére, majd elindulok a végéről vissza és megint csak páronként, ha kell cserélek.
A gyorsulás oka az, hogy ha egy elem a legrosszabb helyen van és nem az összehasonlítások irányába kell vándorolnia, akkor annyiszor kell a teljes soron végig menni, ahányat ennek az elemnek lépnie kell.

Mert mi történik, növekvő sorrendet akarunk, de a legnagyobb elem van az baloldalon (elején)? Mivel az elejéről haladunk, ezért ez szépen végigvándorol a végére már az első sorozatban. De!

Mi van akkor, ha balról jobbra haladunk, növekvő sorrendet akarunk, de a legkisebb a jobb végén van a legnagyobb helyén?
Az első sorozat összehasonlításnál az utolsó párnál fog jobbról egyet balra lépni. Majd megint a legközelebbi teljes sorozat utolsó előtti összehasonlításakor fog balra lépni. Annyi sorozatra van szükség, ahányszor lépnie kell. Minél hosszabb a tömb, annál több ciklusnak kell lefutnia. De ha jobbról is hasonlíthatunk, akkor kicsi elemek a végéről elkezdenek az elejére vándorolni.

További gyorsítási lehetőség, ha megjegyezzük minden irányba hol volt az utolsó csere. Legközelebb csak eddig kell elmenni. Ezt könnyű belátni, mert adott irányba a legnagyobb, vagy legkisebb mindig elvándorol a helyére.
Válasz küldése