public class BucketSortTest {
public static void main(String[] args) {
int arr[]={3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};
radixSort(arr);
for (int i : arr) {
System.out.print(i+" ");
}
}
public static void radixSort(int []arr) {
final int radix=10;
//先求出数组中的最大数,并把它赋值给max
int max=0;
for(int i=0;imax)
max=arr[i];
}
//得到最大数是几位数
int maxLength=maxLengthMethod(max);
int[] bucket=new int[arr.length];
for(int d=1;d<=maxLength;d++){
int[] count=new int[radix];
for (int j=0;j=0;j--){
//获取数字的个位、十位、百位等上的数
int k=getDigit(arr[j],d);
bucket[count[k]-1]=arr[j];
count[k]--;
}
for (int j=0;j< arr.length;j++){
arr[j]=bucket[j];
}
}
}
private static int getDigit(int x, int d) {
return ((x/(int) Math.pow(10,d-1))%10);
}
private static int maxLengthMethod(int max) {
int count=0;
while(max>0){
max=max/10;
count++;
}
return count;
}
}



