Bucketsort
#include
#include
#include
#define tam_bucket 5 //Tamanho de cada balde da estrutura bucket.
#define num_bucket 10 //Número de baldes, isto é, o tamanho do vetor de bucket
#define max 10 //Tamanho do vetor a ser ordenado.
typedef struct { int topo; int balde[tam_bucket]; }bucket;
void bucket_sort(int v[],int tam); //cabeçalho das funções void bubble(int v[],int tam); void Quicksort(int vet[], int ini , int fim); void imprime(int v[] , int tam);
int main(){
int vetor[max]; int index;
srand(time(NULL)); for(index = 0; index < max; index++) { vetor[index] = rand() % 101; }
printf("Vetor Desordenado\n\n"); imprime(vetor, max); printf("\n\n");
bucket_sort(vetor, max);
printf("Vetor ordenado\n\n"); imprime(vetor, max); printf("\n\n");
return 0; }
void bucket_sort(int v[],int tam){ bucket b[num_bucket]; int i, j, k; for(i = 0; i < num_bucket; i++) //inicializa todos os "topo" b[i].topo = 0;
for(i = 0; i < tam; i++){ //verifica em que balde o elemento deve ficar j = (num_bucket) - 1; while(1){ if(j= j * 10){ b[j].balde[b[j].topo] = v[i]; (b[j].topo)++; break; } j--; } }
for(i = 0; i < num_bucket; i++) //ordena os baldes if(b[i].topo) bubble(b[i].balde,b[i].topo); //Quicksort(b[i].balde, b[0].topo, b[i].topo);
i=0; for(j = 0; j < num_bucket; j++){ //põe os elementos dos baldes de volta no vetor for(k = 0; k < b[j].topo; k++){ v[i] =