• 算法-java代码实现基数排序



    基数排序

     

    第11节 基数排序练习题

     

    对于一个int数组,请编写一个基数排序算法,对数组元素排序。

    给定一个int数组A及数组的大小n,请返回排序后的数组。保证元素均小于等于2000。

    测试样例:
    [1,2,3,5,2,3],6
    [1,2,2,3,3,5]
     
     
    1
    import java.util.*;
    2
    
    
    3
    public class RadixSort {
    4
       // 各位装通法
    5
        public int[] radixSort(int[] A, int n) {
    6
            int length = n;
    7
            int divisor = 1;// 定义每一轮的除数,1,10,100...
    8
    
    
    9
            int[][] bucket = new int[10][length];// 定义了10个桶,以防每一位都一样全部放入一个桶中
    10
            int[] count = new int[10];// 统计每个桶中实际存放的元素个数
    11
            int digit;// 获取元素中对应位上的数字,即装入那个桶
    12
    
    
    13
            for (int i = 1; i <= 3; i++) {// 经过4次装通操作,排序完成
    14
                for (int temp : A) {// 计算入桶
    15
                    digit = (temp / divisor) % 10;
    16
                    bucket[digit][count[digit]++] = temp;
    17
                }
    18
    
    
    19
                int k = 0;// 被排序数组的下标
    20
                for (int b = 0; b < 10; b++) {// 从0到9号桶按照顺序取出
    21
                    if (count[b] == 0)// 如果这个桶中没有元素放入,那么跳过
    22
                        continue;
    23
                    for (int w = 0; w < count[b]; w++) {
    24
                        A[k++] = bucket[b][w];
    25
                    }
    26
                    count[b] = 0;// 桶中的元素已经全部取出,计数器归零
    27
                }
    28
                divisor *= 10;
    29
            }
    30
            return A;
    31
        }
    32
    }
     
     
    您的代码已保存
    答案正确:恭喜!您提交的程序通过了所有的测试用例
  • 相关阅读:
    redis缓存问题解决方案
    JVM 2-垃圾收集及内存分配策略
    JVM 1-内存管理
    mysql数据库基础
    事务学习
    使用redis分布式锁来解决集群项目的定时任务冲突问题
    Spring AOP学习
    Spring IOC
    java语言基础7--线程相关类
    多重背包的二进制优化——DP
  • 原文地址:https://www.cnblogs.com/haozhengfei/p/29ba40edbf659f2dbc6b429c2818c594.html
Copyright © 2020-2023  润新知