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

桶排序

时间:2018-05-27 13:47:01      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:open   nbsp   isp   style   div   color   max   get   cti   

技术分享图片
 /**
     * 桶排序
     */
    @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

 

桶排序

标签:open   nbsp   isp   style   div   color   max   get   cti   

原文地址:https://www.cnblogs.com/nihaofenghao/p/9095516.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!