public class bucketsort {
public static void main(String[] args) {
int[] a = {1, 4, 3, 5, 2, 7, 12, 45, 13, 754, 124, 754, 6, 32, 45, 1};
bucketsort bucketsort = new bucketsort();
bucketsort.bucket(a);
for (int b : a) System.out.println(b);
}
public void bucket(int[] a){
int[][] buc= new int [10][a.length];
int [] q = new int[10];
int max = 0, maxleng = 0;
for (int i = 0; i < a.length; i++) if(max<a[i]) max=a[i];
while(max!=0) {
max /= 2;
maxleng++;
}
for (int i = 0,n=1; i < maxleng; i++,n++) {
for (int j = 0; j < a.length; j++) {
int index = a[j]/n % 10;
buc[index][q[index]++] = a[j];
}
int t=0;
for (int j = 0; j <= 9 ; j++) {
if (q[j]==0) continue;
for (int k = 0; k < q[j]; k++) {
a[t++]=buc[j][k];
}
}
}
}
}