Coding Discovery ▏桶排序

Posted CAML编程乐园

tags:

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

      在《算法导论》一文中,我们排序算法的形式化定义。从今天起,我们将开始详细学习每种排序算法,首先我们先来介绍桶排序

Coding Discovery ▏桶排序

   我们依然从一个例子进入今天的话题。

Coding Discovery ▏桶排序

    有5块石头,这5块石头分别重5公斤、3公斤、5公斤、2公斤和8公斤(石头最重为10公斤,且石头的重量是整数)。

     请将这5块石头按照重量从小到大排序。同学们请认真思考一下应该如何实现,再继续往下看。

Coding Discovery ▏桶排序

      好了,我们开始分析一下这个问题。我们知道,石头最重是10公斤,也就是所有的石头,都落在(0-10]之间内。

     这样,我们就可以找来10个桶,将桶按照1-10标记上序号,并按照从小到大的顺序排列。

Coding Discovery ▏桶排序

     当石头的重量值与桶的序号值相等时,就把石头放到对应的桶中。

     例如,第一个石头是5公斤,那么就要放到序号为5的桶中,最后一块石头为8,就要放到序号为8的桶中,以此类推。

Coding Discovery ▏桶排序

     在全部完成后,我们可以知道,5号桶中有2块石头,3号、2号、8号桶中,各有一块石头。我们按照桶号的大小,依次取出石头,就可以得到排过序的石头,结果为2、3、5、5、8。


Coding Discovery ▏桶排序
Coding Discovery ▏桶排序

    通过例子,我们已经对桶排序有了一个比较形象的概念。

     下面我们要给出桶排序算法的抽象定义:桶排序(Bucket Sort)假设输入数据服从均匀分布,然后将输入数据均匀地分配到有限数量的桶中,然后对每个桶再分别排序,对每个桶再使用插入排序算法,最后将每个桶中的数据有序的组合起来。

      是不是很简单直观呢?

Coding Discovery ▏桶排序

      桶排序是一个比较简单的、容易理解且速度较快的排序方法。但是我们也不要忘记它可能会有一些限制。

Coding Discovery ▏桶排序
Coding Discovery ▏桶排序

     首先,桶排序算法要求我们提前知道待排序数列的数值范围,以确定桶的个数。在上面的例子中,如果不能提前知道石头的最大重量,我们就无法使用桶排序解决这个问题。

Coding Discovery ▏桶排序

       

      其次,要求我们对数字精度有所掌握。在同学们现在所学知识阶段中,如果石头重点包含小数和分数,这个问题就没法解决。我们当然可以通过按照经度,增加桶的倍数来解决问题,但是当精度无法确定或精度过高时,就无法有效使用桶排序。

Coding Discovery ▏桶排序

      最后桶排序可能存在大量并未使用的桶,造成空间利用率较低,其空间利用率,与待排序数列的离散情况有关。

Coding Discovery ▏桶排序

      好了,今天关于桶排序,我们就介绍到这里了。期待我们后面的算法,能够对桶排序的一些局限进行改进!




风靡全球的DASH编程机器人课程 

Coding Discovery ▏桶排序

Dash是美国梦工厂wonder workshop推出的一款儿童编程教学机器人。可以很好的培养儿童动脑能力及逻辑思维能力等。目前Dash的应用程序,包含Go、Path、Xylo、Wonder、Blockly,这五款应用分别适用于不同年龄段的孩子学习。孩子们从玩耍中获得知识,通过给真实的机器人编程,点亮孩子们的梦想之光。


Scratch全球最适合青少年学习的编程语言

Coding Discovery ▏桶排序

Scratch是由麻省理工学院(MIT) 设计开发的一款面向少年的简易编程工具。使用者可以不认识英文单词,也可以不会使用键盘。孩子通过拖拽积木块来实现编程,制作动画、游戏、故事、音乐、模拟数学模型等。此课程趣味性强,在玩的过程中学习数学、语文、英语、科学、社会等多门学科知识,构建孩子的逻辑思维能力、团队协作能力、想象力和创造力。


美国凯蒙创意编程

Coding Discovery ▏桶排序

凯蒙教育科技CAML 在中国设立北京和南京分校,面向K-12青少年计算机启蒙和拓展的培训机构。凯蒙将美国的青少年计算机教育理念引入中国,采用美国的教学模式和课件,通过机器人、Scratch、Minecraft Mod、App开发等一系列生动的课程让孩子学习编程,更有CAML Academy北美夏令营,送孩子去美国学编程,上AP课程(大学预修课程),让中国孩子与美国孩子同步接受到最专业的计算机教育。


凯蒙创意编程开始报名啦!

邀请5-12岁的小朋友免费体验Scratch、Stencyl、Dash机器人创意编程课程!

我们已经为每位参加体验课的孩子准备好了电脑和你的机器人朋友,您只需要带着一颗好奇的心来就可以啦。


【报名方式】:请点击底部“阅读原文”报名

北京学区:

新奥品学-凯蒙创意编程培训中心(新奥购物中心)

北京市朝阳区湖景东路11号新奥购物中心新奥品学H2-13-02





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

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

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

桶排序和基数排序

排序算法——桶排序

排序5:桶排序

图解排序 8/10 - 桶排序