码迷,mamicode.com
首页 > 编程语言 > 详细

基数排序

时间:2020-11-06 01:35:55      阅读:24      评论:0      收藏:0      [点我收藏+]

标签:个数   stat   长度   pre   数字   oid   elm   遍历   max   

基数排序

技术图片

 /*
    * 1.求出排序中最大的数的位数
    * 2.创建10个桶,并且桶的大小为数组的长度
    * 3.为了记录桶中的数的多少bucketElementCounts
    * 4.
    * */
    public  static  void radixSort(int [] arr){
        //   * 1.求出排序中最大的数的位数
        int max=arr[0];
        for(int i=0;i<arr.length;i++){
            if(arr[i]>max){
                max=arr[i];
            }
        }
        int maxlength=(max+"").length();
//        创建10个桶
        int [][] bucket=new  int [10][arr.length];
//        记录每个桶存储了多少个数字
        int [] bucketCounts=new int[10];

//        遍历数组
        for(int i=0,n=1;i<maxlength;i++,n*=10){
        for (int j=0;j< arr.length;j++){

               int digistofElment=arr[j]/n%10;
               bucket[digistofElment][bucketCounts[digistofElment]]=arr[j];
            bucketCounts[digistofElment]++;
            }

           // 遍历桶
            int index=0;
            for(int k=0;k< bucketCounts.length;k++){

                if(bucketCounts[k]!=0){
                    for(int j=0;j< bucketCounts[k];j++){
                        arr[index++]=bucket[k][j];
                    }
                }
                //把每个桶清零,便于下一次把十位上的数字放上
                bucketCounts[k]=0;
            }
        }

      
    }

基数排序

标签:个数   stat   长度   pre   数字   oid   elm   遍历   max   

原文地址:https://www.cnblogs.com/sehnen/p/13929484.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有
迷上了代码!