Zaradenie a popis
Bucket sort je triediaci algoritmus, ktorý pracuje v čase O(n). Netriedi prvky porovnávaním, ale predpokladá, že všetky prípustné čísla sú generované náhodným procesom, ktorý prvky distribuje uniformne na intervale. Myšlienkou je rozdeliť pole na konečný počet podintervalov (bucketov) a následne je každý bucket usporiadať osobitne (použitím iného triediaceho algoritmu, alebo rekurzívnym volaním Bucket sortu). Bucket sort je zovšeobecnením triediaceho algoritmu Pigeonhole sort.
^ TOPMyšlienka algoritmu
Bucket sort pracuje nasledovným spôsobom:
1. Vytvorí sa pole veľkosti rozsahu hodnôt, reprezentujúce počiatočne prázdne buckety.
2. Prechádza sa vstupným poľom sa vkladajú sa prvku do zodpovedajúcich bucketov.
3. Utriedi sa každý neprázdny bucket.
4. Vložia sa prvky z neprázdnych bucketov naspäť do pôvodného poľa.
Vizualizácia
Prvky sa vložia do jednotlivých bucketov.
Usporiadajú sa v rámci bucketov.
Iné zobrazenie priebehu algoritmu.
Zápis algoritmu
n := length [A]
For i := 1 to n do
Insert A[i] into list B[nA[i]]
For i := 0 to n-1 do
Sort list B with Insertion sort
Concatenate the lists B[0], B[1], . . B[n-1] together in order.
^ TOP
Vlastnosti algoritmu
Ak chceme aby mal Bucket sort časovú zložitosť O(n), musí každý bucket obsahovať (v ideálnom prípade) len jeden prvok.
Ak toto nie je splnené, triedenie prvkov v rámci bucketu stojí ďalší čas. Preto je Bucket sort vhodný len na triedenie vstupov o ktorých predpokladáme
vhodné rozloženie prvkov po celom intervale.
Triedenie je stabilné, ak je požitý pomocný triediaci algoritmus tiež stabilný.
Experimentovanie
Center for Automation Research, University of Maryland, USA
Vizualizácia Bucket sortu.
http://www.cfar.umd.edu/~goldman/sort/1.1/
Department of Computer Science and Engineering, Indian Institute of Technology Madras, India
Vizualizácia Bucket sortu.
http://www.cs.iitm.ernet.in/tell/foc_selfstudy/bucket_sort.htm