现在的位置: 首页 > 综合 > 正文

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

2013年11月03日 ⁄ 综合 ⁄ 共 1044字 ⁄ 字号 评论关闭
这个算法是对两位数进行排序,即: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(); 
 }

抱歉!评论已关闭.