桶排序

Posted 512178509

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了桶排序相关的知识,希望对你有一定的参考价值。

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

 

以上是关于桶排序的主要内容,如果未能解决你的问题,请参考以下文章

桶排序代码

桶排序和计数排序

线性排序:桶排序计数排序

线性排序:桶排序计数排序

排序算法——桶排序

python桶排序代码