基数排序 Java排序算法

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用
import java.util.ArrayList;
import java.util.List;

public class radixSort {
    int a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,101,56,17,18,23,34,15,35,25,53,51};
public radixSort(){
    sort(a);
    for(int i=0;i<a.length;i++)
        System.out.println(a[i]);
}
public  void sort(int[] array){   

            //首先确定排序的趟数;   
        int max=array[0];   
        for(int i=1;i<array.length;i++){   
               if(array[i]>max){   
               max=array[i];   
               }   
            }   

    int time=0;   
           //判断位数;   
            while(max>0){   
               max/=10;   
                time++;   
            }   

        //建立10个队列;   
            List<ArrayList> queue=new ArrayList<ArrayList>();   
            for(int i=0;i<10;i++){   
                ArrayList<Integer> queue1=new ArrayList<Integer>(); 
                queue.add(queue1);   
        }   

            //进行time次分配和收集;   
            for(int i=0;i<time;i++){   

                //分配数组元素;   
               for(int j=0;j<array.length;j++){   
                    //得到数字的第time+1位数; 
                   int x=array[j]%(int)Math.pow(10, i+1)/(int)Math.pow(10, i);
                   ArrayList<Integer> queue2=queue.get(x);
                   queue2.add(array[j]);
                   queue.set(x, queue2);
            }   
                int count=0;//元素计数器;   
            //收集队列元素;   
                for(int k=0;k<10;k++){ 
                while(queue.get(k).size()>0){
                    ArrayList<Integer> queue3=queue.get(k);
                        array[count]=queue3.get(0);   
                        queue3.remove(0);
                    count++;
              }   
            }   
          }   

   }  

}

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:[C#]横竖都是4九宫格算法

下一篇:MongoDB创建\更新\删除文档操作