Nem rendezett tömbben történő keresés felgyorsítására vannak módszerek?
Valószínűleg más módszer nincs, mint a legelejétől elindulni egy while ciklussal, amely kilép az elem megtalálása esetén...
A logaritmikus keresést lehetne alkalmazni, de mivel vizsgálatot nem érdemes végezni (mivel rendezetlen a tömb), ezért ez még adott esetben lassíthat is.
Valamilyen módosított beszúrásos rendező algoritmussal nem érdemes próbálkozni? Bármilyen ötlet érdekelne. Pascal-ban érdekelne a megoldás.
"A logaritmikus keresést lehetne alkalmazni"
Nem lehetne, mert rendezetlen a tomb. Ha nem rendezed, linearis keresesnel nincs jobb megoldas.
"Valamilyen módosított beszúrásos rendező algoritmussal nem érdemes próbálkozni? "
Most akkor rendezni akarod?
Nem akarom rendezni, csak a megoldáson gondolkodtam.
Logaritmikus keresést alkalmazni lehet, csak lassabb lesz...
Tehát, először a tömb elemeinek számának felétől számítva egyik, utána másik irányba történik a vizsgálat, persze adott esetben ez még lassíthat is ha az első felében nem volt...
Ez nem logaritmikus (bináris) keresés, amit leírtál. Mert hogy működik az? Megnézi a keresési tartomány "közepén" álló elemet, hogy egyezik-e a keresettel, ha pedig nagyobb annál, akkor természetesen felesleges tőle "jobbra" folytatni a keresést, mivel rendezett tömbről van szó, ahol az elemtől "jobbra" álló (precízebben: nagyobb index-szel rendelkező) elemek nem lehetnek kisebbek nála.
Nyilvánvaló, hogy nem rendezett tömbnél (ahol bárhol lehet egy elem) ez nem járható út ez, mert attól, hogy 100 elemű tömbben az első 99 nagyobb, mint a keresett, utolsó lehet éppen az.
Eszembe jutott még egy oylan megoldás, hogy átmásolni azt az elemet egy halmazba, amelyet keresünk, ezután a tömböt is egy másik halmazba másolni.
Tudom hogy (legalábbis Pascal esetén) halmaznál elemekre hivatkozni nem lehet, de ha egy értéket vissza tudna adni valami függvény, hogy hol metszi egymást a két halmaz, az segítene, vagy rosszul gondolom? Nem tudom ha ez lehetséges, tényleg gyorsítana -e...
Látatlanban:
Nem, nincsenek módszerek. Vagy eleve rendezetten tárolsz, vagy lineáris lesz a keresés. Előbbi lehetséges egyszerű tömbbel, keresőfával, hash tömbbel, index-szel például.
Szerintem mindenki maximum ennyit fog tudni segíteni, hogy valamelyik. Ha esetleg megmondod, hogy mi a konkrét feladat, akkor tudnak majd azon is gondolkodni, hogy melyik a legmegfelelőbb, addig csak az időt húzod.
Azt lehetne csinálni, hogy párhuzamosan nézed meg, hogy egyezik-e valamelyik elem a keresettel.
Vagy rendezel, ami szekvenciálisan n*log n nagyságrendű, tehát ha nem lesz sok keresés, akkor nem érdemes rendezned. Viszont rendezni is lehet párhuzamosan.
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!