基数排序:基数排序又称为“桶子法”,从个位开始将待排序的数,按照这位的值放到相应的编号为0~9的桶中。。。
第一趟排序结束:个位数字从小到大排列,例如:对于待排序列(49,38,65,97,76,13,27,49,1,34,0),第一趟排序结束(0 1 13 34 65 76 97 27 38 49 49 )
基数排序java代码如下:
public static void Sort(int a[],int n)
{
int d=1;
int k=0;
while(d<n)
{
List<List<Integer>> bucket2=new ArrayList<>();
for(int i=0;i<10;++i)
{
List<Integer> list=new ArrayList<>();
bucket2.add(i,list);
}
//遍历数组将数字放到桶里
for(int i=0;i<a.length;++i)
{
int num=(a[i]/d)%10;
bucket2.get(num).add(a[i]);
}
//取桶里面的元素放到数组里面
for(int i=0;i<10;++i)
{
if(bucket2.get(i).size()>0)
{
for(int j=0;j<bucket2.get(i).size();++j)
{
a[k]=bucket2.get(i).get(j);
k++;
}
}
}
d*=10;
k=0;
}
}
public static void main(String[] args) {
int a[]= {49,38,65,97,76,13,27,49,1,34,0};
Sort(a,100);
for(int i:a)
{
System.out.print(i+" ");
}
}