标签:个数 stat 长度 pre 数字 oid elm 遍历 max
/*
* 1.求出排序中最大的数的位数
* 2.创建10个桶,并且桶的大小为数组的长度
* 3.为了记录桶中的数的多少bucketElementCounts
* 4.
* */
public static void radixSort(int [] arr){
// * 1.求出排序中最大的数的位数
int max=arr[0];
for(int i=0;i<arr.length;i++){
if(arr[i]>max){
max=arr[i];
}
}
int maxlength=(max+"").length();
// 创建10个桶
int [][] bucket=new int [10][arr.length];
// 记录每个桶存储了多少个数字
int [] bucketCounts=new int[10];
// 遍历数组
for(int i=0,n=1;i<maxlength;i++,n*=10){
for (int j=0;j< arr.length;j++){
int digistofElment=arr[j]/n%10;
bucket[digistofElment][bucketCounts[digistofElment]]=arr[j];
bucketCounts[digistofElment]++;
}
// 遍历桶
int index=0;
for(int k=0;k< bucketCounts.length;k++){
if(bucketCounts[k]!=0){
for(int j=0;j< bucketCounts[k];j++){
arr[index++]=bucket[k][j];
}
}
//把每个桶清零,便于下一次把十位上的数字放上
bucketCounts[k]=0;
}
}
}
标签:个数 stat 长度 pre 数字 oid elm 遍历 max
原文地址:https://www.cnblogs.com/sehnen/p/13929484.html