Con secchi ben scelti e pochi elementi per secchio, distribuzione e concatenazione costano Θ(n+k).
Algoritmi di ordinamento · 7/7
Bucket sort
Distribuisce i valori per intervallo, ordina localmente e concatena.
Come funziona
Ogni secchio rappresenta un intervallo ordinato rispetto agli altri. Dopo la distribuzione basta ordinare i valori dentro ciascun secchio e concatenarli da sinistra a destra.
Simulazione passo passo
Ogni barra rappresenta un elemento. I colori distinguono gli elementi confrontati, il pivot o la chiave, la parte già definitiva e l’area attiva.
Da 2 a 16 valori. Per questo simulatore sono ammessi valori da 0 a 999.
- Confronti
- 0
- Scritture
- 0
- Scambi
- 0
- Passaggio / livello
- 0
Pseudocodice collegato alla simulazione
create k empty bucketsfor value in Aindex ← bucketFor(value)append value to bucket[index]for each bucketsort bucketconcatenate all buckets into A
La riga evidenziata corrisponde all’operazione descritta nel simulatore. I dettagli di gestione degli indici sono intenzionalmente semplificati.
Studio della complessità
Assumendo valori uniformi e k=Θ(n), la dimensione attesa dei secchi è costante e il tempo atteso è Θ(n+k).
Se tutti gli elementi finiscono nello stesso secchio e questo usa insertion sort, il costo diventa Θ(n²).
I k secchi contengono complessivamente n elementi: Θ(n+k). Stabilità e costo dipendono dall’ordinamento interno.
Proprietà in breve
La stabilità riguarda l’ordine relativo degli elementi con chiave uguale.
La classificazione considera la versione dell’algoritmo mostrata in questa pagina.
Quando usarlo e che cosa evitare
Buona scelta quando…
Efficace quando la distribuzione è nota e quasi uniforme, per esempio misure normalizzate o coordinate spaziali.
Errore comune
Numero e confini dei secchi sono parte dell’algoritmo: una scelta che non riflette la distribuzione crea forti sbilanciamenti.