美文网首页技术
桶排序 (Bucket sort)

桶排序 (Bucket sort)

作者: lxtyp | 来源:发表于2023-02-28 21:17 被阅读0次

    桶排序 (Bucket sort):将数据分配到有限数量的有序桶里。

    对如下一组数进行排序:3,5,1,4,12,18,19,20,9,3,15,7,0。(数据大小在0到20之间)

    排序代码如下:

    public void bucketSort() {
        int[] befArrays = {3, 5, 1, 4, 12, 18, 19, 20, 9, 3, 15, 7, 0};
        int[] buckets = new int[21];
        for (int i=0; i<befArrays.length; i++) {
            buckets[befArrays[i]]++;
        }
    
        for (int i=0; i<buckets.length; i++) {
            if (buckets[i]==0) {
                continue;
            } else {
                for (int j=0; j<buckets[i]; j++) {
                    System.out.printf(i + "\t");
                }
            }
        }
    }
    

    桶排序对要排序的数据的有非常严格的要求。主要有以下两点:
    首先,要排序的数据需要很容易就能划分成所需要的桶,并且,桶之间有着大小顺序。
    其次,数据在桶之间的分布是比较均匀的。如果数据分配到了桶里,有些桶里非常多,有些非常少,很不平均,那桶内数据排序的时间复杂度就不是常量级了。在极端情的时候,如果数据都被分到同一个桶里,那就失去了该算法的意义。

    总之,桶排序非常简单有效。但是使用场景极其有限。作为一个入门级的算法知识,能让我们感受到编程的快乐。桶排序还是相当推荐的。

    相关文章

      网友评论

        本文标题:桶排序 (Bucket sort)

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