Exemplo vetor = {2,1,3,5,1,3,3,5,4,2}
Levando em consideração o exemplo acima, seria necessário a criação dos baldes 1, 2, 3, 4 e 5. Os números seriam distribuídos nos baldes da seguinte forma:
Após isso, basta esvaziar os baldes a partir do primeiro para que os números fiquem na ordem.
Os baldes não necessariamente precisam ser numerados dessa forma, para um conjunto muito grande de números a quantidade de baldes seria muito grande e podemos ainda encontrar vetores que não possuem números repetidos, assim, a criação de um balde para cada vetor faz com que a ordenação se torne muito trabalhosa. Para organizar um conjunto grande de número que não se repetem cada balde pode ter um intervalo. Por exemplo: balde 1 receberá número de 0 a 9, balde 2 de 10 a 19, balde 3 de 20 a 29 e assim por diante. Implementação do bucket sort em C (EPPSTEIN, 1996):
#include
#define tam_balde 100
#define num_balde 10
#define max 10
typedef struct {
int topo;
int balde[tam_balde];
}balde;
void bucket_sort(int v[],int tam){
balde b[num_balde];
int i,j,k;
for(i=0;i<num_balde;i++)
b[i].topo=0;
for(i=0;i<tam;i++){
j=(num_balde)-1;
while(1){
if(j<0)
break;
if(v[i]>=j*10){
b[j].balde[b[j].topo]=v[i];
(b[j].topo)++;
break;
}
j--;
}
}
for(i=0;i<num_balde;i++)
if(b[i].topo)
bubble(b[i].balde,b[i].topo);
i=0;
for(j=0;j<num_balde;j++){
for(k=0;k<b[j].topo;k++){
v[i]=b[j].balde[k];
i++;
}
}
}
void bubble(int v[],int tam){
int i,j,temp,flag;
if(tam)
for(j=0;j<tam-1;j++){
flag=0;
for(i=0;i<tam-1;i++){
if(v[i+1]<v[i]){
temp=v[i];
v[i]=v[i+1];
v[i+1]=temp;
flag=1;
}
}
if(!flag)
break;
}
}
int main(int argc, char *argv[])
{
int v[6] = {5,3,7,1,2,9}, i, j, aux, menor, pos;
bucket_sort(v, 6);
//mostrar vetor ordenado
printf("\nVetor ordenado: ");
for(i=0;i<6;i++)
printf("%d, ", v[i]);
}
Observe no código acima que o bucket sort não é exatamente um algoritmo de ordenação, mas sim uma distribuição para tornar a organização mais efetiva. Por esse motivo é encontrado no código a função bubble, que é utilizada para organizar os elementos dentro de cada balde. Pode-se substituir o bubble sort por qualquer outro algoritmo de ordenação.

