举例:要排序的数组 int[] arr={7,9,8,4,5,1,6,3,2,0};
从小到大排列:
/*
基数排序
*/
public class RadixSort {
public static void main(String[] args) {
int[] arr={7,9,8,4,5,1,6,3,2,0};
int k = 0;
int n = 1;
int m = 1; //控制键值排序依据在哪一位
int[][]temp = new int[10][arr.length]; //数组的第一维表示可能的余数0-9
int[] order = new int[10]; //数组order用来表示该位是i的数的个数
while(m<=arr.length)
{
for(int i=0;i<arr.length;i++)
{
int lsd=((arr[i]/n)%10);
temp[lsd][order[lsd]]=arr[i];
order[lsd]++;
}
for(int i=0;i<10;i++)
{
if(order[i]!=0)
for(int j=0;j<order[i];j++)
{
arr[k]=temp[i][j];
k++;
}
order[i]=0;
}
n*=10;
k=0;
m++;
}
for(int b=0;b<arr.length;b++){//输出
System.out.println(arr[b]);
}
}
}
运行结果:
0
1
2
3
4
5
6
7
8
9
实现过程:将所有待比较的正整数统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。