算法思路:比较数量级,从个位比较到这组数中数量级最高的级数。
package top.ltyzqhh.Annotation;
import java.util.Arrays;
public class RedixSort {
public static void main(String[] args) {
int[] a={1324,234,532,1313,1,3,553};
System.out.println(Arrays.toString(a));
redixSort(a);
System.out.println(Arrays.toString(a));
}
public static void redixSort(int[] array){
int[][] bucket=new int[10][array.length-1];//桶里面所存的具体数值
int[] bucketElementCouonts = new int[10];//每个桶所存的元素个数
int max= array[0];
//求出最大的数
for (int i = 0; i <array.length ; i++) {
if (max<array[i]) max=array[i];
}
int maxCount=(max+"").length();//最大位数
for (int i = 0; i <maxCount ; i++) {
//把数组中的数都放在桶里
for (int j = 0; j <array.length ; j++) {
int value =array[j]/(int) Math.pow(10,i)%10;
bucket[value][bucketElementCouonts[value]]=array[j];
bucketElementCouonts[value]++;
}
int index=0;
for (int j = 0; j <bucketElementCouonts.length ; j++) {//遍历每个桶
if (bucketElementCouonts[j]!=0){
for (int k = 0; k <bucketElementCouonts[j] ; k++) {//遍历每个桶的元素
array[index]=bucket[j][k];
index++;
}
}
bucketElementCouonts[j]=0;//清空桶,便于后面排序
}
}
}
}