美文网首页
基数排序

基数排序

作者: YAOPRINCESS | 来源:发表于2020-07-14 11:45 被阅读0次

结果

30 11 1 25 5 6 
1 5 6 11 25 30 

完整代码

package com.nan;

/**
 * @author klr
 * @create 2020-07-14-10:47
 */
public class BucketSort {

    public static void main(String[] args) {

        int[] arr=new int[]{11,25,6,30,1,5};
        BucketSort.sort(arr);

    }

    public static void sort(int[] arr){

        //查找最大的数,计算总共要遍历几次,也就是最大数的位数
        int max=arr[0];
        for(int i=1;i<arr.length;i++){
            if(arr[i]>max)
                max=arr[i];
        }
        //求位数
        int maxLength=(""+max).length();

        //创建桶
        int[][] container=new int[10][arr.length];
        //创建每个桶的计数器
        int[] counter=new int[10];


        for (int i = 0,n=1; i < maxLength; i++,n*=10) {

            //排序,填入桶
            //   /n%10用于求每个位上的数字
            for(int j=0 ;j<arr.length;j++){
                int digit=arr[j] /n %10;
                container[digit][counter[digit]++]=arr[j];
            }
            //复制回原数组
            int index=0;
            for(int k=0;k<counter.length;k++){
                //如果桶不为空
                if(counter[k]!=0){
                    for (int m = 0; m < counter[k]; m++) {
                        arr[index++]=container[k][m];
                    }
                    counter[k]=0;
                }
            }
            for (int num : arr) {
                System.out.print(num+" ");
            }
            System.out.println();
        }

    }
}

相关文章

  • 基数排序(c++) to be continued

    [TOC] 参考 基数排序算法的实现与优化 clickhouse 实现的基数排序源码 基数排序的性能优化 Radi...

  • 数组-基数排序

    采用基数排序方式对数组进行排序 基数排序百科:基数排序排序(Distribution Sort),属于分配式排序,...

  • day12-基数排序

    基数排序 基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”...

  • swift经典算法-基数排序

    基数排序算法 基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子...

  • php-计数排序、基数排序、桶排序

    计数排序、基数排序、桶排序 时间复杂度 O(n) 计数排序 基数排序 桶排序

  • 数据结构之基数排序

    1.基数排序(桶排序)介绍 基数排序(radix sort)属于“分配式排序”(distribution sort...

  • 基数排序(Radix Sort)

    基本思想: 基数排序是一种有意思的排序,在看过其它比较排序后,基数排序真的很有意思。 基数排序(Radix Sor...

  • 5分钟了解基数排序

    5分钟了解基数排序 前言 基数排序无需进行比较和交换,而是利用分配和收集两种基本操作实现排序。基数排序分为两种:第...

  • 算法面经--基数排序

    基数排序 一、算法思路 1.简单介绍 1)基数排序法是属于稳定性的排序,基数排序法的是效率高的稳定性排序法 基数排...

  • 基数排序

    基数排序已经不再是一种常规排序方法,它更多地像一种排序方法的应用,基数排序必须依赖于另外的排序方法。基数排序的总体...

网友评论

      本文标题:基数排序

      本文链接:https://www.haomeiwen.com/subject/irpxhktx.html