关于字符串的基数排序参考字符串的基数排序。
数字数组的基数排序:从数组各元素的第一位到各元素中的最高位遍历,在每一层遍历中进行计数排序,最后得出有序数组。
import java.util.Arrays;
public class Main_number{
public static int[] RadixSort(int[] arr){
//最大数的位数
int maxLength = 0;
//最大数
int max = 0;
//找最大数
for (int i = 0; i < arr.length; i++) {
if (arr[i] > max){
max = arr[i];
}
}
//获得最大数的位数
while(max > 0){
max /= 10;
maxLength++;
}
//结果数组
int[] sortedArr = new int[arr.length];
for (int i = 1; i <= maxLength ; i++) {
int[] count = new int[10];
for (int j = 0; j < arr.length; j++) {
count[getBit(arr[j],i)]++;
}
int sum = 0;
for (int j = 0; j < count.length; j++) {
sum += count[j];
count[j] = sum;
}
for (int j = arr.length-1; j >= 0 ; j--) {
int index = getBit(arr[j],i);
sortedArr[count[index]-1] = arr[j];
count[index]--;
}
arr = sortedArr.clone();
}
return arr;
}
public static int getBit(int tem,int k){
String tem_str = String.valueOf(tem);
if (tem_str.length()<k){
return 0;
}
return tem/(int)Math.pow(10,k-1)%10;
}
public static void main(String[] args) {
int[] arr = {53, 3, 542, 748, 14, 214, 154, 63, 616, 55 , 58};
System.out.println(Arrays.toString(RadixSort(arr)));
}
}