基数排序思路
1.定义一个“桶”,这个桶根据元素位数的值存放元素。这个桶是一个二维数组,第一层数组存放0到9的值,第二层存放数据
2.我们需要根据最大位数的元素确定遍历次数
3.从个位数开始遍历,根据位数的值确定放入哪个桶,比如1就放进元素为一的桶。
4.我们还需要一个变量来纪律每个桶里元素的数量。这个变量可以是一个一维数组,方便记录所有桶里面元素的个数。
5.遍历需要排序的数组,根据位数上的值放入桶里,在从桶里取出数据,依次放回数组,直到遍历完。
6.继续重复操作,直到位数遍历完。
public void sort2(int[] arr){
int max = arr[0];
for(int m = 0; m < arr.length; m++){
if(arr[m] > max){
max = arr[m];
}
}
int length = (max+"").length();
for(int n = 0, f = 1; n < length; n++, f*=10){
int[][] tong = new int[10][arr.length];
int[] index = new int[tong.length];
int temp = 0;
for(int i = 0; i < arr.length; i++){
int count = arr[i] / f % 10;
tong[count][index[count]] = arr[i];
index[count]++;
}
for(int j = 0; j < tong.length; j++){
if(index[j] != 0){
for(int m = 0; m < index[j]; m++){
arr[temp] = tong[j][m];
temp++;
}
index[j] = 0;
}
}
temp = 0;
}
System.out.println(Arrays.toString(arr));