package suanfa;
import java.util.Arrays;
public class Jishu {
public static void jishu(int[] arr) {
//先找出数组中的最大的数
int max=0;
for(int i=0;i<arr.length;i++) {
if(arr[i]>max) {
max = arr[i];
}
}
//排序轮次
int maxlunci = (max+"").length();
//准备10个桶
int[][] brr = new int[10][arr.length];
//辅助数组用来记录几号桶放了几个数
int[] crr =new int[10];
//进行maxlunci次排序
for(int i=0,n =1;i<maxlunci;i++,n*=10) {
for(int j=0;j<arr.length;j++) {
//第一遍比较个位,第二遍比较十位,第三次比较百位,以此类推
int wei = arr[j] / n % 10;
//将数据放入桶中,辅助数组记录
brr[wei][crr[wei]++]=arr[j];
}
int index=0;
//从桶中取得数据放入原数组,从辅助数组中检查是否有数据
for(int k=0;k<crr.length;k++) {
if(crr[k]!=0) {
for(int t=0;t<crr[k];t++) {
arr[index++]=brr[k][t];
}
}
crr[k]=0;
}
System.out.println("第"+(i+1)+"轮次,处理后数组为arr="+Arrays.toString(arr));
}
}
public static void main(String[] args) {
int[] arr = {53,747,33,246,75,867,4};
jishu(arr);
}
}