A rendezési algoritmusok olyan utasítások, amelyek tömböt vagy listát vesznek bemenetként, és az elemeket egy adott sorrendbe rendezik.
A rendezések leggyakrabban numerikus vagy ábécésorrendben (úgynevezett lexikográfiai) vannak, és lehetnek növekvő (AZ, 0-9) vagy csökkenő (ZA, 9-0) sorrendben.
Miért fontos az algoritmusok rendezése?
Mivel a rendezés gyakran csökkentheti a probléma összetettségét, fontos algoritmus a számítástechnikában. Ezeknek az algoritmusoknak közvetlen alkalmazásuk van algoritmusok keresésében, adatbázis-algoritmusokban, osztási és meghódítási módszerekben, adatszerkezeti algoritmusokban és még sok másban.
Néhány általános rendezési algoritmus
A leggyakoribb rendezési algoritmusok közül néhány:
- Válogatás rendezése
- Bubble Sort
- Beszúrás rendezése
- Egyesítés rendezés
- Gyors rendezés
- Halom rendezés
- Számolás rendezés
- Radix Sort
- Vödör rendezése
Rendezési algoritmus osztályozása
A rendezési algoritmusok a következő paraméterek alapján kategorizálhatók:
- Cserék vagy inverziók száma alapján Ez az ahányszor az algoritmus felcseréli az elemeket a bemenet rendezéséhez.
Selection Sort
minimális számú csereügyletet igényel. - Összehasonlítások száma alapján Ez az ahányszor az algoritmus összehasonlítja az elemeket a bemenet rendezéséhez. A Big-O jelölés használatával a fent felsorolt rendezési algoritmusok példái legalább
O(nlogn)
a legjobb esetben összehasonlítást igényelnekO(n^2)
, a legrosszabb esetben pedig az összehasonlításokat a legtöbb kimenethez. - Rekurzió vagy nem rekurzió alapján Egyes rendezési algoritmusok, például
Quick Sort
rekurzív technikákkal rendezik a bemenetet. Más rendezési algoritmusok, példáulSelection Sort
vagyInsertion Sort
, nem rekurzív technikákat alkalmaznak. Végül néhány rendezési algoritmus, például aMerge Sort
rekurzív és a nem rekurzív technikákat is felhasználja a bemenet rendezéséhez. - A stabilitás alapján a rendezési algoritmusokról azt mondják, hogy
stable
ha az algoritmus egyenlő kulcsokkal tartja fenn az elemek relatív sorrendjét. Más szavakkal, két ekvivalens elem ugyanabban a sorrendben marad a rendezett kimenetben, mint a bemenetben. Insertion sort
,Merge Sort
ésBubble Sort
stabilakHeap Sort
ésQuick Sort
nem stabilak- Extra helyigény alapján a rendezési algoritmusokról azt mondják, hogy
in place
haO(1)
a rendezéshez állandó többletterületre van szükségük . Insertion sort
ésQuick-sort
ain place
sort, ahogy haladunk az elemeket a pivot és valójában nem használ külön tömböt, ami nem ez a helyzet az egyesítés sort, ahol a bemenet mérete kell felosztani előzetesen tárolja a kimenetet a sort.Merge Sort
egy példa aout place
rendezésre, mivel a műveleteihez több memória szükséges.
A lehető legjobb időbeli bonyolultság bármilyen összehasonlításon alapuló rendezéshez
Bármely összehasonlításon alapuló rendezési algoritmusnak legalább nLog2n összehasonlítást kell végeznie a bemeneti tömb rendezéséhez, a Heapsort és az egyesítés rendezés pedig aszimptotikusan optimális összehasonlítási sorrend. Ezt a döntési fa diagramjának megrajzolásával könnyen be lehet bizonyítani.