Rendezés-algoritmus vizualizátor

A szerver PHP-ben generál egy véletlen tömböt, majd az ÖSSZES kiválasztott algoritmussal (egyszerre legfeljebb 6) rendezi - nézd meg egymás mellett, mennyire eltérően dolgozik tizenegy rendezés ugyanazon a bemeneten.

AlgoritmusKiválasztva: 2 / 6
Egyszerű (O(n²))
Hatékony (O(n log n))
Lépésközös és nem összehasonlító
Méret
Nézet
Seed

-

Mit jelent az O(n log n), O(n²)?

Az algoritmusok időbonyolultságát ("mennyire lassul, ahogy nő a bemenet") a Big O jelöléssel írjuk le - ez a lépésszám növekedésének NAGYSÁGRENDJÉT mutatja, nem a pontos futásidőt.

Az O(n²) ("kvadratikus") azt jelenti, hogy a bemenet megduplázásával a lépésszám kb. négyszereződik - ez teszi a buborékrendezést nagy tömbön gyakorlatilag használhatatlanná.

Az O(n log n) ("linearitmikus") ennél lényegesen jobb: a bemenet megduplázásával a lépésszám kicsivel több, mint duplázódik - a gyors-, összefésülő- és kupacrendezés is ebbe az osztályba tartozik, ezért skálázódnak jól nagy adatmennyiségre.

Fontos, hogy az elméleti bonyolultság nem minden: a gyakorlatban a gyorsrendezés a legtöbb valós bemeneten gyorsabb az összefésülő rendezésnél, annak ellenére, hogy legrosszabb esetben O(n²)-re lassulhat - ezt a fenti vizualizáció is jól szemlélteti.

A stabil rendezés az egyenlő kulcsú elemek eredeti sorrendjét megtartja - ez fontos, ha többszörösen rendezünk (pl. előbb név, majd kor szerint). Az összehasonlító rendezések alsó korlátja O(n log n); a radix rendezés ezt úgy kerüli meg, hogy nem hasonlít össze, hanem az elemek számjegyeit használja.