在网上找基数排序的时候发现一个博主有点小bug,那就是把我这个数组输入,他会出现错误,原因是当个位是在数组中的时候,例如这里的3,2,他排序的时候会先输出3,2而不是2,3。他没有处理好n的关系,前面讲解挺好的,https://blog.csdn.net/u011863767/article/details/53912543这个是他的链接,等我有时间的时候,我再补充一下。
public class MyNioClient {
public static final int M=Integer.MAX_VALUE;
public static void main(String[] args) {
int[] data={3,2,73,22,93,867494,4355123};
sort(data,10);
for(int i=0;i<data.length;i++){
System.out.println(data[i]+"\t");
}
}
public static void sort(int[] a,int d){
int n=1;
boolean hasNum=false;
int[][] temp=new int[d][a.length];
int[] order=new int[d];
while(true){
if(n!=1&&!hasNum){
break;
}
hasNum=false;
for(int i=0;i<a.length;i++){
int x=a[i]/n;
if(x!=0){
hasNum=true;
}
int lsd=x%10;
temp[lsd][order[lsd]]=a[i];
order[lsd]++;
}
n=n*10;
int k=0;
for(int i=0;i<d;i++){
if(order[i]!=0){
for(int j=0;j<order[i];j++){
a[k++]=temp[i][j];
}
}
order[i]=0;
}
}
}
}