Nombre 1, Nombre 2, Orlando Martnez , Siri Denise Knutson Flores, Adam Erick Gamez Labastida, Jos Alberto Hernndez
Pacheco
Distribuye todos los elementos a ordenar entre un nmero finito de cubetas. Cada cubeta puede contener los elementos que cumplan con determinadas condiciones.
Se crea un arreglo del tamao de la gama de todos los valores posibles que se est ordenando. En el segundo arreglo, se calculan las ocurrencias de cada uno de los nmeros. Para cada ndice del arreglo, los datos representan las veces que el nmero se produjo. Se ordena la lista.
Bucket-sort(A,k,N) N length[A] For i = 1 TO N do insert A[i] into list B[n*A[i]] For i = 0 TO N-1 do sort list B[i] with insertion-sort Concatenate the lists B[0],B[1],,B[N-1] together in order
#include <stdio.h> void bucketSort(int A[],int n) { int i,j; int buckets[n]; for(i=0;i<n;i++) buckets[i]=0; for(j=0;j<n;j++) ++buckets[A[j]]; for(i=0,j=0;i<n;i++) for(;buckets[i]>0;-buckets[i]) A[j++]=i; }
int main() { int A[]={1,3,4,6,4,2,9,1,2,9}; int n=10; int i;
for(i=0;i<n;i++) printf("%d ",A[i]);
printf("\n"); bucketSort(A,n); for(i=0;i<n;i++) printf("%d ",A[i]); printf("\n"); } return 0;