桶排序

作者: Thisislife | 来源:发表于2019-01-27 15:34 被阅读0次

桶排序原理是将数组分到有限数量的桶子里,每个桶子再分别排序。假设现在有一组数字数量m个,大小从1到n,那么我们可以创建n个带编号的桶(编号从1到n),依次把数字按大小放入对应编号的桶中,接着按编号从小到大从桶中取出对应的数字,这时候数字自然就有序了。

描述:

前提:数据在某区间均匀分布,这里桶采用数组加链表的方式存储数据
1、先创建固定大小的桶,大小根据数据分布的区间决定,例如数据分布在0~9区间,就创建长度为10的数组;
2、将数据按大小放入对应编号的桶内,重复数据就往链表后面插(这里举例的数据0~9,桶的编号也刚好对应0-9);
3、最后把桶内数据依次倒出。

代码:

    /**
     * 桶采用数组加链表的方式存储数据
     * @param array 目标数组
     * @param num 需要桶的个数
     */
    private void BucketSort(int[] array, int num) {
        LinkedList<Integer>[] bucket = new LinkedList[num];
        for (int data : array) {
            if (bucket[data] != null) {
                bucket[data].add(data);
            } else {
                LinkedList<Integer> list = new LinkedList<>();
                list.add(data);
                bucket[data] = list;
            }
        }
        int arrayIndex = 0;
        for (LinkedList<Integer> list: bucket) {
            while (list != null && list.size() > 0) {
                // 表里有值就拿出来
                array[arrayIndex++] = list.pop();
            }
        }
    }

测试代码:

    public void test() {
        int[] array = new int[]{5, 3, 7, 0, 1, 8 , 0, 0, 6, 2, 4, 6, 9};
        BucketSort(array, 10);
        for (int data : array) {
            System.out.print(data + " ");
        }
    }

运行结果:

0 0 0 1 2 3 4 5 6 6 7 8 9

相关文章

  • 算法基础 排序(一)

    桶排序冒泡排序快速排序 1.桶排序 所谓的桶排序就是列出所有的可能进行排序 小结:这里的桶排序只是简化版的.桶排序...

  • 《数据结构与算法之美》10——排序(三)桶排序、计数排序、基数排

    桶排序 概念 桶排序,核心思想是将要排序的数据分到几个有序的桶里,每个桶里的数据再单独进行排序。桶内排序之后,再把...

  • 桶排序

    什么是桶排序桶排序是计数排序的衍化桶排序需要创建若干个桶来装元素协助排序。每一个桶(bucket)代表一个区间范围...

  • 桶排序,计数排序和基数排序

    桶排序 桶排序的核心思路 桶排序的核心处理思想是先定义几个有序的桶,将要排序的数组按照桶划分的值的范围分到这几个桶...

  • 桶排序与哈希桶排序

    一.桶排序 算法原理 桶排序 (箱排序)的原理是将待排序序列分到有限数量的桶里面,然后对每个桶再分别排序(可以使用...

  • php-计数排序、基数排序、桶排序

    计数排序、基数排序、桶排序 时间复杂度 O(n) 计数排序 基数排序 桶排序

  • 数组-桶排序

    采用桶排序方式对数组进行排序 桶排序百科:桶排序(Bucket Sort),或者所谓的箱排序是一种非比较排序.工作...

  • 13|桶排序

    桶排序( Bucket sort )首先,我们来看桶排序。桶排序,顾名思义,会用到 “ 桶 ” ,核心思想是将要排...

  • 线性排序

    桶排序 核心思想是将要排序的数据分到几个有序的桶里,每个桶里的数据再单独进行排序。桶内排序完之后,再把每个桶里的数...

  • 排序算法(3)- 桶排序、计数排序、基数排序

    桶排序(Bucket sort) 将要排序的数据分到几个有序的桶里,每个桶里面再单独进行排序,最后把每个桶里的数据...

网友评论

      本文标题:桶排序

      本文链接:https://www.haomeiwen.com/subject/ykamjqtx.html