基数排序(算法)---找颗树吊死

博客介绍了一个对两位数进行排序的算法,通过队列实现排序过程,包含分发、收集和打印数据等步骤,还提到其他位数可自行扩展,给出了具体的代码实现。
这个算法是对两位数进行排序,即:3,5,11,14,42,23,21....(其他位数可以自己扩展,其中QuequeI就是队列).是一个非常有意思的算法.
private final int ONES = 1; //个位
 public void baseCompositor(int[] reData) throws QuequeException{
  QuequeI[] q = new QuequeI[10];
  for(int i=0;i<10;i++)
   q[i] = new QuequeI(10);
  distribute(reData,q,ONES);
  collect(reData,q);
  print(reData);
  System.out.println("=====================");
  distribute(reData,q,2);//十位
  collect(reData,q);
  print(reData);
 }
 //distribute data to queque
 public void distribute(int[] reData,QuequeI[] q,int kind) throws QuequeException{
  int i = 0;
  if(kind == ONES) {
   while(i<reData.length){
    q[reData[i]%10].insert(reData[i]);
    i++;
   }
  } else{
   while(i<reData.length){
    q[reData[i]/10].insert(reData[i]);
    i++;
   }
  }
 }
 //collect data in queque to array
 public void collect(int[] reData,QuequeI[] q) throws QuequeException{
  int temp = 0;
  for(int i=0;i<10;i++){
   while(!q[i].isEmpty()){
    reData[temp++] = q[i].delete();
   }
  }
 }
 //print data in array
 public void print(int[] reData){
  for(int i=0;i<reData.length;i++)
   System.out.print(reData[i]+"   ");
  System.out.println(); 
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值