Hogy lehet C ben növekvő sorrendbe rakni egy struktúra elemeit a következő feltétellel?
Figyelt kérdés
Van egy struktúrám ami embereket tárol(név,születési idő) ezzel eddig nincs gond, írtam egy ehhez hasonló programot csak struktúrával nem tömbbel:
for (i = 0; i < n; ++i)
{
for (j = i + 1; j < n; ++j)
{
if (number[i] > number[j])
{
a = number[i];
number[i] = number[j];
number[j] = a;
}
}
}
(Remélem látszik, n a tömb mérete)
Azonban van egy olyan kitétel, hogy ha 2 vagy több születési év megegyezik azoka maradnak abban a sorrendben az én programom viszont megkavarja őket ez persze csak akkor látszik ha nevekkel együtt iratom ki a születési éveket. Köszönöm
2020. okt. 24. 15:17
1/5 anonim válasza:
Az a gond, hogy kavarod az indexeket. Amikor cserélsz két elemet akkor a ciklus maradékában nem az eredetihez hasonlítod a többit, hanem a felcserélthez. Irasd ki minden lépésben az összehasonlítandó elemeket és meglátod, mi a gond.
2/5 A kérdező kommentje:
Igen kiirattam és látom mit csinál de ötletem sincs hogy lehetne ezt máshogy csinálni.
2020. okt. 25. 09:20
3/5 anonim válasza:
A buborék rendezés nevű algoritmus nem rossz erre. Keress rá, hogy miben különbözik a tiedtől.
4/5 A kérdező kommentje:
Sikerült, bár túlbonyolítottam. Ha ezt a példát nézzük akkor a az if-ben a > jelet kicseréltem <= jelre és akkor azt vettem észre hogy csökkenő sorrendbe rakja de az egyenlő elemek sorrendjét nem rontja el. Innentől csak annyit kellett tennem hogy megfordítom a tömb elemeit. Logikus lenne hogy a > jel helyett >= -t írok és akkor nem kell fordítgatni de így már nem működik. Már csak az érdekel miért nem lenne úgy jó és hogy lehetne szebben megcsinálni? Csak hogy tanuljak belőle.
2020. okt. 25. 18:56
5/5 anonim válasza:
Azért, mert az indexeket még mindig cserélgeted és előre haladsz a tömbön. Ha hátulról kezdenéd a tömb rendezését, akkor pont a fordított reláció lenne jó.
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
A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!