• 排序算法-基数排序(Java)


    package com.rao.sort;
    
    import java.util.*;
    
    /**
     * @author Srao
     * @className RadioSort
     * @date 2019/12/10 18:17
     * @package com.rao.sort
     * @Description 基数排序
     */
    public class RadioSort {
    
        /**
         * 基数排序
         * @param arr
         * @return
         */
        public static int[] radioSort(int[] arr){
            //1.找出最大值
            int n = arr.length;
            int max = arr[0];
            for (int i = 1; i < n; i++) {
                if (max < arr[i]){
                    max = arr[i];
                }
            }
    
            //2.求出对大值的位数
            int num = 1;
            while (max / 10 > 0){
                num++;
                max /= 10;
            }
    
            //3.创建桶
            List<LinkedList<Integer>> bucketList = new ArrayList<>(10);
    
            //4.初始化桶
            for (int i = 0; i < 10; i++) {
                bucketList.add(new LinkedList<>());
            }
    
            //5.把每个数放到对应的桶当中
            for (int i = 1; i <= num; i++){
                for (int j = 0; j < n; j++) {
                    int index = (int) ((arr[j]/Math.pow(10, i-1)) % 10);
                    bucketList.get(index).add(arr[j]);
                }
    
                //6.把桶中的数输出到原数组
                int k = 0;
                for (int j = 0; j < 10; j++){
                    for (Integer integer : bucketList.get(j)) {
                        arr[k] = integer;
                        k++;
                    }
                    //清除桶中的元素
                    bucketList.get(j).clear();
                }
            }
        return arr;
        }
    
        public static void main(String[] args) {
            int[] arr = new int[]{3,6,2,5,9,1,0,8};
            System.out.println(Arrays.toString(arr));
            arr = radioSort(arr);
            System.out.println(Arrays.toString(arr));
        }
    }

      基数排序是按照个位,十位,百位。。。这种顺序来排序的。

      1.先比较数的个位,按照不同的大小放在10个桶里面,然后把桶中的数返回给原数组。

      2.然后比较十位,按照十位的大小把所有的数放在0-9这10个桶里面,然后把桶中的数返回给原数组。

      3.以此类推,在比较完最高位之后,数组中的数就是有序的了。

      

  • 相关阅读:
    python学习笔记(9)-python编程风格
    python学习笔记(8)-实现linux系统python命令行光标移动
    python学习笔记(7)--python版本升级
    python学习笔记(6)--三种运行Python的方式
    python学习笔记(5)--python环境变量配置
    python学习笔记(4)--Python安装
    python学习笔记(3)--python获取对象帮助信息
    网络基础知识
    重写equals方法
    当在浏览器输入一个url访问后发生了什么
  • 原文地址:https://www.cnblogs.com/rao11/p/12018451.html
Copyright © 2020-2023  润新知