Kezdőoldal » Számítástechnika » Programozás » Program milyen rendezéssel...

Program milyen rendezéssel kezeljen fájlban lévő nagylétszámú rekordokat? (bővebben lent)

Figyelt kérdés

Elméletben foglalkoztat ez a téma: nagy létszámú rekordok esetén célszerű adatbázist használni, vagy bármilyen programozási nyelven, algoritmussal megoldható a feladat?

Ha létrehozásra kerülne például egy program által nagy számú rekordot tartalmazó fájl, milyen algoritmussal célszerű rendezni, hogy a rendezési sebresség ne vegyen el túl sok időt?

Például: az adatok: név, telefonszám. Tegyük fel, hogy telefonszám szerint kerül rendezésre.

Ilyenkor azt érdemes tenni, hogy minden törlésnél-módosításnál-beszúrásnál újrarendezzni az egész fájlt és keresni olyan algoritmust, amely rendezett adatokon gyors?

Rendezni úgy érdemes hogy például egy pár tízezer, rekordokból álló tömböt definiálni, majd ebbe olvasgatni az adatokat, míg meg nem telik, aztán kiírni stb, vagy egyesével olvasni/írni a fájlba a rekordokat?



2021. jan. 21. 17:05
1 2 3
 21/27 anonim ***** válasza:
93%
De miért hazudoztál pár másodperces buborékrendezésről millió elemre?
2021. jan. 21. 23:17
Hasznos számodra ez a válasz?
 22/27 anonim ***** válasza:
0%

Hazudni lehet, hogy te szoktál, én max. tévedek.

Arra válaszoltam, amit a kérdező felvetett, hogy milyen csekély, elhanyagolható időbeli nyereségre számíthat ha egy "jobb" algoritmust használ a buboréknál - ami közismerten a legrosszabb - akkor is, ha a rekordok elemszáma akár egymillió.

2021. jan. 21. 23:32
Hasznos számodra ez a válasz?
 23/27 anonim ***** válasza:
0%
Egyébként, lefuttattam 999 000 elemszámmal, random generált, 4 byte-os integer értékekkel és a rendezés utáni kiírással együtt 29 másodperc alatt lefutott. Ebben szintén benne volt az elemek kigenerálására eső futásidő is. Az eredmény engem is meglepett.
2021. jan. 21. 23:46
Hasznos számodra ez a válasz?
 24/27 A kérdező kommentje:

1000000 elemű tömb, nem rendezett tömbön az algoritmusok sebessége

buborékos: 1811.63 sec

beszúrásos: 1058.63 sec

selection sort: 909.26 sec

shell sort: 0.06 sec

counting sort: 0.01 sec

minimum kiválasztásos rendezés: 947.48 sec

gyors: 0.02 sec

Rendezett tömbön

buborékos: 0.00 sec

beszúrásos: 0.01 sec

selection sort: 998.04 sec

shell sort: 0.02 sec

gyors: 0.02 sec

2021. jan. 22. 07:08
 25/27 anonim ***** válasza:
0%

"algoritmusok sebessége buborékos: 1811.63 sec"


A buborékrendezés egy lassú, gazdaságtalan algoritmus, de ez az általad mért idő még így is borzasztóan hosszú.

Sztem optimalizált buborékrendezéssel kellene próbálkoznod, mert az legalább nem megy végig újra a sorted elemeken. Ezzel a futásidő akár az eredeti egyharmadára, sőt, negyedére is redukálódhat.


Amúgy, az gondolom látszik, hogy az általad elkivánt elemszám eseteiben nem járna a rendezés semmiféle időhátránnyal, bármelyik algoritmust is választanád.


Rendezés során egyesével fájlba írni nem jó dolog, mert a file-ok írása, olvasása iszonyúan lassú művelet a memóriához képest. Azt mondjuk megteheted, hogy memória streamet hozol létre, amit úgy használhatsz, mint egy fájlt és ha végeztél, akkor a streamet kiíratod a háttértárra, fizikai fájlként, immár egyetlen lépésben.

2021. jan. 23. 03:02
Hasznos számodra ez a válasz?
 26/27 A kérdező kommentje:

Köszönöm a hozzászólást.

Az optimalizált buborékos rendezés algoritmusát hol találom meg, a Wikipédián?

Néztem több forrásból is nemrég, a Wikipédiát azt hiszem pont nem néztem akkor.

2021. jan. 23. 07:02
 27/27 anonim ***** válasza:
0%

Itt egy forrás hozzá:


[link]


Még annyit, hogy ha normál prioritásszinten futtatod a szorteredet, akkor az csak a prociidő 50 %-át kapja meg, jó esetben. Szóval, ezzel is számolni kell.

2021. jan. 23. 10:32
Hasznos számodra ez a válasz?
1 2 3

További 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!