Hol a hiba a programban? C nyelvről lenne szó.
A program célja egy tömb elemeit rendezni. Kétféle rendezést ismerek, a buborék-és gyorsrendezést, úgy tudom, hogy van más is, de puszta kíváncsiságból gondoltam, írok egy saját algoritmust. Ez a következő elven működik: A tömbben megkeresi a legkisebb ill. legnagyobb elemet, ezeket a legelső ill. legutolsó helyre viszi, majd megismétli, ám ezúttal már nem dolgozik a két szélső elemmel. Harmadszor már a széltől számított 2-2 elem nem játszik stb. Ezt elvégzi feleannyiszor, mint ahány elemű a tömb, és így elméletileg minden elem a helyére kerül. Ha páratlan elemszámú tömbről van szó, akkor az elemszám felét lefele kerekíti, és elméletileg így is rendezett kéne legyen. Megjegyzem, hogy mérjem, milyen hatékony a megoldás, beépítettem egy időmérőt is.
A probléma a következő: A program a legnagyobb elemet nem viszi hátra, és a legkisebb elem értékét nem kicseréli a legelső helyen levővel, hanem csak beírja az értékét az első helyre, így elvesztődik az az érték, amit ott tároltam. A kicserélő függvényt külön ellenőriztem, jól működik. Különös módon, az utolsó helyre sokszor bekerül elemnek a 2293616, egy nem kigenerált szám, ami állandó.
Itt a kód, nem a legszebb, de olvasható, és nem tudom, mi okozhatja a problémát.
Ami a szépségét illeti, ezen tervezek javítani, ám először szeretném működőképessé tenni. A válaszokat köszönöm előre is.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!