• 桶排序


     /**
         * 桶排序
         */
        @Test
        public void bucketSort(){
            int[] array = {5,6,7,8,9,1,2,3,5,6,7,8,9};
            buckerSort(array);
            System.out.println(Arrays.toString(array));
        }
    
        public void buckerSort(int[] array){
            //构造桶
            int n = array.length;
            List<ArrayList<Integer>> Blist = new ArrayList<ArrayList<Integer>>(n);
            for (int i=0;i<n;i++) {
                Blist.add(new ArrayList<Integer>(5));
            }
            int max = Integer.MIN_VALUE;
            int min = Integer.MAX_VALUE;
    
            for (int item:array){
                max=Math.max(max,item);
                min=Math.min(min,item);
            }
    
            for (int i:array
                 ) {
                int length = array.length;
                //下标计算
                int index=(int)((i-min)/(max-min+1.0)*length);
                Blist.get(index).add(i);
            }
    
            //桶内排序
            for(int i=0 ;i<Blist.size();i++){
                Collections.sort(Blist.get(i));
            }
    
            int j=0;
            //合并元素
            for (ArrayList<Integer> items:Blist
                 ) {
                for (int item:items){
                    array[j++]=item;
                }
    
            }
        }
    View Code
  • 相关阅读:
    实习笔记day03
    实习笔记day02
    实习笔记day01
    第4章:数组与方法
    栈内存与堆内存的区别
    java数据类型
    保护模式指令
    空描述符
    段描述符
    全局描述符表
  • 原文地址:https://www.cnblogs.com/nihaofenghao/p/9095516.html
Copyright © 2020-2023  润新知