1. Főoldal
  2. Cikkek
  3. Nagy számok közelről
  4. Egymillió adat rendezése: húszmillió vagy ötszázmilliárd összehasonlítás?

Egymillió adat rendezése: húszmillió vagy ötszázmilliárd összehasonlítás?

Ugyanazt az egymillió rekordot az egyik egyszerű eljárás közel ötszázmilliárd összehasonlítással rendezi át kedvezőtlen sorrendből. Egy másik eljárásnál húszmilliónál kevesebb kulcs-összehasonlítás is elegendő. Ekkora különbséget egy kisebb hardvercsere aligha tüntet el.

Színezett programkód sötét szerkesztőfelületen.
Illusztráció · Fotó: lawrence_monk / Pixabay
Ebben a cikkben

Csak a kulcsok összehasonlítását számoljuk

A saját feladatban egymillió különböző egész számot kell növekvő sorrendbe rendezni. Az összehasonlítás azt dönti el, két szám közül melyik kisebb. A memóriaolvasást, az elemek másolását és a program egyéb műveleteit most külön hagyjuk. Ez a közös mértékegység az eljárások nagyságrendi különbségét mutatja meg.

Az első módszer a szokásos beszúrásos rendezés: az új elemet visszafelé haladva beillesztjük a már rendezett részbe. A második az összefésüléses rendezés: kisebb részeket rendezünk, majd a rendezett részeket egyesítjük. Az MIT algoritmikai tananyaga ezt a váltást a négyzetes és az n log n jellegű növekedés összehasonlítására is használja.

A fordított sorrend minden új elemnek hosszú utat ad

A beszúrásos módszer számára a csökkenő sorrend kedvezőtlen. A második elemet egy korábbi számmal, a harmadikat kettővel, és így tovább, az utolsót n−1 korábbi számmal kell összevetni. Az összes kulcs-összehasonlítás 1 + 2 + … + (n−1) = n(n−1)/2.

Egymillió elemnél ez 1 000 000 × 999 999 / 2 = 499 999 500 000, vagyis csaknem ötszázmilliárd összehasonlítás. A négyzetes jelleg miatt nagy n mellett az adatmennyiség kétszerezése közel négyszerezi ezt a munkát. Az eljárás viszont már növekvő sorrendű adatokon kedvező lehet: ott a szokásos változatnak csak n−1 kulcs-összehasonlítás kell.

Minden szinten nagyjából egyszer dolgozunk végig az adatokon

Az összefésüléses módszernél két már rendezett listát az elejüktől hasonlítunk össze. Mindig a kisebb következő elemet tesszük az eredménybe. Két összesen m elemű lista egyesítéséhez legfeljebb m−1 kulcs-összehasonlítás kell, mert az egyik lista kiürülésekor a másik maradéka közvetlenül hozzáfűzhető.

A felezésekből egymillió elemnél legfeljebb húsz összefésülési szint adódik. Egy szinten az összes lista együttes hossza egymillió, ezért a 20 × 1 000 000 = 20 millió kényelmes felső becslés. A szokásos, felező változat pontos legrosszabb értéke ennél kisebb, 18 951 425. A cikk fő összevetéséhez a könnyen követhető húszmilliós korlát is elegendő.

Az ezerszeres adatmennyiség másképp nő a két módszernél

Egymillióról egymilliárd elemre a négyzetes munka közel egymilliószorosára nő. Az n log₂ n jellegű becslésben az elemszám ezerszereződik, a szintek száma körülbelül húszról harmincra változik. A húszmilliós becslésből harmincmilliárdos felső becslés lesz, ami 1500-szoros növekedés.

Tegyük fel kizárólag szemléltetésként, hogy másodpercenként százmillió kulcs-összehasonlítást tudnánk végezni, és minden egyéb költség nulla. Az egymilliós, fordított bemeneten a beszúrásos számítás ekkor körülbelül 5000 másodperc, a húszmilliós becslés 0,2 másodperc lenne. Ez mesterséges sebességmodell, mérésnek nem tekinthető. Valódi gépen a másolás és az adat-hozzáférés is számít.

Az adatok állapotát és a teljes feladatot is nézd

Kis vagy majdnem rendezett bemenetnél egy egyszerűbb eljárás jó választás lehet. Nagy, kedvezőtlen sorrendű adathalmaznál a növekedési ütem döntővé válik. A rendezési kulcs is lehet drága: hosszú szövegek, bonyolult összehasonlítás vagy lemezről olvasott rekordok esetén egyetlen összevetés költsége sem állandó apróság.

Tisztázd azt is, szükséges-e a teljes rendezés. A legkisebb tíz érték kiválasztása más feladat, mint egymilliárd rekord teljes sorrendjének előállítása. A műveletszám jó első szűrő a megoldások között; a végleges döntést az adatokra jellemző mérés és a memóriaigény együtt támasztja alá.

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. Ezer különböző, fordított sorrendű elemnél hány kulcs-összehasonlítást végez a leírt beszúrásos rendezés?
Megoldás és levezetés

Helyes válasz: 499 500

1000 × 999 / 2 = 499 500. A második elem egy, a harmadik kettő, az utolsó 999 korábbi elemhez hasonlítódik.

A kapcsolódó cikkrész újraolvasása ↑
2. Mi adja az összefésüléses rendezés húszmilliós felső becslését egymillió elemnél?
Megoldás és levezetés

Helyes válasz: Legfeljebb húsz szint, szintenként legfeljebb egymillió összehasonlítás.

A felező felbontásnak legfeljebb húsz egyesítési szintje van. A szinteken a részek teljes mérete egymillió, így a szorzat biztonságos összehasonlítási korlát.

A kapcsolódó cikkrész újraolvasása ↑
3. Mit jelentene nagy n mellett az adatmennyiség kétszerezése egy n² jellegű műveletszámnál?
Megoldás és levezetés

Helyes válasz: Közel négyszeres munkát.

(2n)² = 4n². A pontos beszúrásos képlet alacsonyabb rendű tagja miatt a szorzó csak közel négy, de nagy n mellett ez a meghatározó növekedés.

A kapcsolódó cikkrész újraolvasása ↑
4. Miért nem valódi futásidőmérés a cikk 0,2 másodperces eredménye?
Megoldás és levezetés

Helyes válasz: Mert feltételezett műveleti sebességgel és nulla egyéb költséggel készült.

A százmillió összehasonlítás/másodperc mesterséges feltételezés. A valódi program másol, memóriát kezel, és az összehasonlítás költsége is eltérhet.

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