Rendezés probléma C-ben

Fórumok

Üdv! Olyan gondom van, hogy a terminálra beírt karakterek gyakoriságát kell kiíratnom c-ben, ez még megy is. viszont a feladat tovabbi részében gyakoriság szerint kell rendeznem a karaktereket itt akadtam el, két megoldas jut eszembe a rendezésre:

elso:

http://pastebin.com/Q1s2Lj1j

Masodik:

http://pastebin.com/w9yqXRqr

Ilyen kimenetet kéne kapnom pl.:

108 'l': 10
97 'a': 8
121 'y': 6

Előre is köszönöm a válaszokat, már vagy két hete itt vagyok elakadva

Hozzászólások

Hasznalj stukturat amiben benne van a karakter erteke is + qsort

g

Szóval ez a probléma. Neked kell írni rendezést?
Nem hatékony, de a legprimitívebb házi feladathoz: buborék rendezés.
http://hu.wikipedia.org/wiki/Bubor%C3%A9krendez%C3%A9s

És hogy hogyan?

unsigned char Counter[256]; // ezed van már, nullázott vektor
unsigned char Charlist[256]; // 0..255 -ig feltölteni

A Counter-t buborékrendezed, vele együtt a Charlist-ben is megcsinálod a cseréket.

Ha két tömbben tárolsz összetartozó értékeket, akkor amikor rendezed az egyik tömböt, az első alapján rendezned kell a másikat is. Persze a gyakorlatban ez a legtöbb rendezési algoritmusban +1 sort jelent a kódban, de ez pont elég ahhoz, hogy pl. a könyvtári qsort-ot már ne használhasd (persze eltekintve attól, hogy azt most amúgy sem lehet). Könnyen előfordulhat, hogy egy programhiba következtében a két tömb egymáshoz tartozó adatai "elszakadnak" egymástól, és ezért a program kimenete szinte biztos, hogy hibás lesz.
Ha struktúrát építesz az egymáshoz tartozó adatokból, akkor elég egy tömböt tárolni. Vagyis használhatod az összes tömbön értelmezett algoritmust úgy, hogy nem léphet fel inkonzisztens állapot, mert az egymáshoz tartozó adatok mindig egymás mellett maradnak.

Első megoldás:
Ha az „a” tömböt akarod rendezni, akkor előtte töltsd fel valamivel. Vagy ne az „a” tömböt rendezd.

-----
A kockás zakók és a mellészabások tekintetében kérdezze meg úri szabóját.

nem kell rendezés. a kis méretek miatt nem is erőszakoljuk meg a hatékonyságot...
ha a két hét komoly akkor, gondold át hogy neked erre valóban szükséged van-e.
http://ideone.com/iyYH7

Karakterek, vagy byte-ok? Ha C-rol van szo (es a Unicode-ot hanyagoljuk), akkor van belole max. 256 fele, ladarendezessel letudhato egy pillanat alatt. gyk: felveszel egy 256-os tombot, kinullazod, utana olvasod a byte-okat, es ha pl. 'A' jott, akkor a tombod 'A'-ik elemet noveled 1-el.
Innentol a kiiratas trivialis. Ha gyakorisag szerint kell rendezned a kimenetet, akkor a 256 meretu tombbel egy kb. hatsoros buborekrendezes is egy pillanat alatt vegez.

--
My gold plated butt-plug business is being sued by Apple.
Apparently they have a patent for overpriced crap for arseholes.

Köszönöm szépen az ötleteket, erre volt szükségem :)