Pascal: index fájl alapján történő rendezés hogyan valósítható meg? (bővebben lent)
Adott egy egyszerű adatbázis, egy rekord, "név" és "telefonszám" adatokkal. Bevitel során azt szeretném megvalósítani, hogy a fő fájlban az adatok rendezetlenül, a bevitel sorrendjében legyenek, de szeretnék egy név és egy telefonszám szerinti index fájlos rendezést végezni (minden bevitel esetén), így alapból mindkét index fájl rendezetten tartalmazná a mindenkori aktuális állapotot.
Úgy tudom, hogy rendezett adatokon való munka során az egyik leghatékonyabb a beszúrásos rendezés. Eredetileg vektorra volt írva, sajnos, nem tudtam fájlra átírni. Szeretném fájlra átírni és olyan módon, hogy ne az eredeti fájlba rendezzen, hanem index fájlba. Tudna valaki segíteni ennek megvalósításában?
Egyébként létezik rendezett adatok esetén a beszúrásos rendezésnél jobb rendezési algoritmus, amely sok adat esetén még kevesebb idő alatt megy végig a (rendezett) adatokon?
Próbálkozásom itt található:
A sima, egyszerű (és legkevésbé hatékony) rendezés segítségével próbáltam megvalósítani a dolgot, sajnos ez se sikerült, illetve csak részben :-(
Természetesen nem kell a helyükön maradniuk, én bénáztam az indexfájlos megvalósítással. :-)
Első példámban a beszúrásos rendezést említettem, másodikban pedig a klasszikust, azaz "simple sort" néven ismert általában.
„Természetesen nem kell a helyükön maradniuk”
Mindettől függetlenül én megpróbálkoztam azzal, hogy legalább a legegyszerűbb esetben, két statikus tömbbel modellezzem az indexelős megoldást, reményem szerint sikeresen. A kísérletem eredménye itt található:
Mint láthatod, a kézi bevitel meghívását a bemutató egyszerűsítése érdekében kikommenteztem, helyette stringtömbökből olvassa be a neveket és a számokat – ha van türelmed, átrakhatod a kommentjelet, és kipróbálhatod manuálisan is. Észreveheted azt is, hogy ékezetes (itt UTF-8 kódolású) nevek esetén nem működik az összehasonlítás; Ez nyilván nem lep meg, a feladattól független probléma, amellyel itt nem fájdítottam a fejem. Van még egy Auto2 nevű procedúra is a programban, ez maga generál „neveket” és számokat az ASCII-készleten belül maradva. Itt láthatók az egyik próbafuttatásakor nyert nevek rendezetlen és rendezett listájának megfeleltetései:
Köszi hogy foglalkoztál a dologgal. :-)
Igen, nekem is ilyet kellett volna tenni az indexfájl esetén mint amit a vektorokkal bemutatsz. :-)
Segítséggel azóta sikerült a dolog :-)
Köszi hogy még adatokat is gyártottál hozzá. :-)
Igen, már a feladat közzététele előtt tudtam, hogy bizony az ékezetekkel nem fog stimmelni a rendezés.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!