1. Főoldal
  2. Cikkek
  3. Nagy számok közelről
  4. Egymilliárd rekord között harminc vizsgálat is elég lehet

Egymilliárd rekord között harminc vizsgálat is elég lehet

Egymilliárd rendezett rekord között egy adott kulcsot legfeljebb harminc rekord megvizsgálásával is meg lehet találni, vagy ki lehet zárni a jelenlétét. A gyorsaság ára a megfelelő adatszerkezet. Egy rendezetlen lista vagy egy lassú háttértár egészen más gyakorlati eredményt ad.

Keresőoldal egy okostelefon képernyőjén.
Illusztráció · Fotó: AS_Photography / Pixabay
Ebben a cikkben

A középső elem után a tartomány fele elhagyható

A saját modellben különböző egész kulcsok szerint növekvő sorrendbe rendezett tömbünk van. Bármely sorszámú rekordot közvetlenül elérhetünk. Megnézzük a tartomány középső elemét: ha azonos a keresett kulccsal, készen vagyunk; ha kisebb, a jobb oldali részben folytatjuk; ha nagyobb, a bal oldalin. Az elhagyott félben a rendezettség miatt biztosan nincs a keresett kulcs.

Egy rekordvizsgálatba most a középső kulcs elővételét és a keresett értékkel való összevetését értjük. Egy konkrét program ehhez több processzorműveletet vagy feltételvizsgálatot használhat. A harmincas szám tehát az algoritmus lépéseit számolja; a másodpercben mért futási időhöz további adatok kellenek.

Ezerszer több adat tíz további lépést kér

A szokásos középsőelem-vizsgálat legrosszabb esetében n elemhez ⌊log₂ n⌋ + 1 lépés kell, ha n legalább 1. Egymilliónál ez 20, egymilliárdnál 30. A közelítést a kettes hatványok is mutatják: 2¹⁹ = 524 288, 2²⁰ = 1 048 576; 2²⁹ = 536 870 912, 2³⁰ = 1 073 741 824.

A pontos lépéshatárhoz az utolsó elem vizsgálata is hozzátartozik. Például pontosan 2²⁰ elemes tömbnél a szokásos algoritmus legrosszabb esetben 21 vizsgálatot végez, ezért a logaritmust nem érdemes gondolkodás nélkül lefelé kerekíteni. A milliós és milliárdos példánkban a fenti 20 és 30 helyes felső határ.

Mit nyerünk az egyesével haladáshoz képest?

Ha a milliárd rekord rendezetlen, és további indexünk nincs, a legegyszerűbb keresés egyesével végignézi őket. Hiányzó kulcsnál mind az egymilliárdot ellenőrzi. Ha a keresett elem biztosan szerepel, és mindegyik pozíció azonos valószínű, az átlagos vizsgálatszám (1 000 000 000 + 1) / 2 = 500 000 000,5.

A rendezett állapotot viszont elő kell állítani és karban kell tartani. Egyetlen alkalmi keresés kedvéért egy nagy lista teljes rendezése sokkal több munka lehet, mint az egyszeri végigolvasás. Sok ismétlődő keresésnél a rendezés vagy az index felépítésének költsége megoszlik a lekérdezések között. A feladatok egész sorát kell mérlegelni.

A gyors keresés nem tesz minden műveletet harminclépésessé

Új elem helyét bináris kereséssel gyorsan megtalálhatjuk egy rendezett tömbben, de a beillesztéshez sok későbbi elemet el kell tolni. A Python bisect dokumentációja külön hangsúlyozza a logaritmikus helykeresés és a lineáris beszúrás eltérő költségét. Folyamatosan változó adatokhoz ezért más adatszerkezet is indokolt lehet.

Ha egy teljes értéktartomány összes rekordját kérjük, a tartomány elejét és végét gyorsan megtalálhatjuk, de a találatokat még ki is kell olvasni. Egymillió visszaadott rekord egymillió rekordnyi kimenetet jelent. Ugyanezért egy gyors kulcskeresésből a teljes riport vagy export sebességére sem lehet közvetlenül következtetni.

Mit kell ellenőrizni a nagy ígéret előtt?

Nézd meg, valóban a keresett kulcs szerint rendezettek-e az adatok, és ugyanazt az összehasonlítási szabályt használja-e a keresés. Szövegeknél például a kis- és nagybetű, illetve a rendezési szabály is számíthat. Egyetlen rosszul elhelyezett rekord is megsértheti azt a feltételt, amely alapján a keresés fél tartományokat hagy el.

A közvetlen hozzáférés szintén feltétel. Láncolt listán a középső elemhez eljutás önmagában sok lépés, háttértáron a szétszórt olvasások késleltetése lehet jelentős. A harminc vizsgálat ezért pontos algoritmikus állítás a leírt tömbre. Használható teljesítménybecsléssé az adatméret, az adatszerkezet és a hozzáférési költség együtt teszi.

A példák és a források

A számpéldák saját, szemléltető feladatok; a megadott feltételezésekből és képletekből újraszámolhatók. Valós vállalkozásra, országos statisztikára vagy jövőbeli eredményre nem vonatkoznak.

Forrásellenőrzés: 2026-11-09. A hivatkozások a fogalmakat és a módszert támasztják alá; a példaszámítások a cikk részei.

Négy kérdés a cikkhez

A válaszokból kiderül, melyik összefüggést érted már, és melyik részt érdemes újraolvasnod. A válaszokat és a pontszámot nem mentjük.

1. Mekkora felső határ tartozik a cikkben megadott szokásos bináris kereséshez egymilliárd elemnél?
Megoldás és levezetés

Helyes válasz: Harminc rekordvizsgálat

⌊log₂ 1 000 000 000⌋ + 1 = 30. Korábbi találatnál kevesebb is elég; a rekordvizsgálat több gépi műveletből állhat.

A kapcsolódó cikkrész újraolvasása ↑
2. Melyik feltétel szükséges ahhoz, hogy a keresett érték alapján biztonságosan elhagyhassuk a tartomány felét?
Megoldás és levezetés

Helyes válasz: A keresési kulcs szerinti rendezett sorrend.

A rendezettség teszi bizonyossá, hogy a középső kulcsnál kisebb vagy nagyobb értékek melyik oldalon lehetnek.

A kapcsolódó cikkrész újraolvasása ↑
3. Miért lehet lassú egy új elem beszúrása akkor is, ha a helyét gyorsan megtaláltuk a tömbben?
Megoldás és levezetés

Helyes válasz: Mert sok meglévő elem eltolása válhat szükségessé.

A hely megkeresése logaritmikus költségű lehet, a tömb elemeinek elmozgatása viszont akár az adatmennyiséggel arányos munka.

A kapcsolódó cikkrész újraolvasása ↑
4. Egymillió találatot kell visszaadni egy milliárdos, rendezett adathalmazból. Melyik állítás helyes?
Megoldás és levezetés

Helyes válasz: A tartomány határa gyorsan megtalálható, de a millió találat kiolvasása további munka.

A keresési hely meghatározása és a találatok kiolvasása külön feladat. Egymillió eredmény továbbítása legalább az eredmények mennyiségétől függ.

A kapcsolódó cikkrész újraolvasása ↑
Dajka Gábor Online Marketing és Pszichológia című könyve

Saját könyv · reklám

Értsd meg, mi történik
a számok mögött.

A kampányszámok megmutatják, mi történt. A vásárlói döntések megértéséhez a figyelem, az észlelés, a meggyőzés és a viselkedés mechanizmusait is érdemes vizsgálni. Az Online Marketing és Pszichológia ehhez ad gyakorlatias, a magyar piacon használható szemléletet.

Megnézem a könyvet Új lapon nyílik. Hivatalos webáruház · Új lapon nyílik