基数排序RadixSort二进制的实现
基本概念:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。
基数排序的方式可以采用LSD或MSD,LSD的排序方式由键值的最右边开始,而MSD则相反,由键值的最左边开始。
源码:
public class RadixSort {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i=0;i<8;i++)
{
B[i]=(int)(Math.random()*10);
}
System.out.println(Arrays.toString(B));
radixSort(B);
System.out.println(Arrays.toString(B));
}
static void RadixSort(int [] A)
{
for(int i=0;i<32;i++)
{
List<Integer> l0= new ArrayList<>();
List<Integer> l1= new ArrayList<>();
for(int j=0;j<A.length;j++)
{
System.out.println ((A[j]>>i&1));
if((A[j]>>i&1)==0)
l0.add(A[j]);
else l1.add(A[j]);
}
for(int j=0;j<l0.size();j++)
A[j]=l0.get(j);
for(int j=0;j<l1.size();j++)
A[j+l0.size()]=l1.get(j);
}
}
}