1 public class RadixSort {
2 public static void main(String[] args) {
3 int [] array={88,11,2,1,19,88,77,66,99,88,101,77,3003,202};
4 int maxCount=getMaxCount(array);
5 radixSort(array,maxCount*10,1);
6 for(int i=0;i<array.length;i++){
7 System.out.print(array[i]+" ");
8 }
9 }
10
11 private static int getMaxCount(int[] array){
12 double max=0;
13 for(int i:array){
14 int length=String.valueOf(i).length();
15 if(String.valueOf(i).length()>max){
16 max=length;
17 }
18 }
19 return (int)Math.pow(10,max-1);
20 }
21
22
23 private static void radixSort(int[] array,int maxBit,int fromBit){
24 if(maxBit<=fromBit) return;
25 int[][] sortArray=new int[10][array.length];
26 int[] order=new int[array.length]; //记录0-9占用的元素个数
27 for(int i=0;i<array.length;i++){
28 int index=(array[i]/fromBit)%10;
29 sortArray[index][order[index]++]=array[i];
30 }
31 int index=0;
32 for(int i=0;i<sortArray.length;i++){
33 for(int j=0;j<order[i];j++){
34 array[index++]=sortArray[i][j];
35 }
36 }
37 radixSort(array,maxBit,fromBit*10);
38 }
39 }