单元五 · 把数据排列有序

第20课 化大为小桶排序

任务场景
任务场景:化大为小桶排序

一、学习目标

  • 认识桶排序算法,能够使用自然语言描述桶排序算法的执行步骤。
  • 了解桶的数量和范围在桶排序中的作用,感受将大的数据量化大为小的分治思想。

二、情境导入

老师收到了 50 位同学参加朗诵活动的报名信息表,这些同学来自一至五年级各班。现在这些信息表处于混乱状态,老师希望把这些信息表按照报名同学的年龄从小到大排序。现在请你帮助老师想一个方法来完成这个任务。

三、核心讲解

本课学习路径:

1分析桶排序的算法
2桶排序的优势与不足

1.分析桶排序的算法

先把学生信息表中的年龄数据整理为表格。提示:信息表中 9.08 表示 9 岁 8 个月。要把报名信息表按照学生的年龄从小到大排序。数据较多,人工操作繁琐——可以直接用前面所学的排序法,也可以使用桶排序的方法。

桶:桶排序中的「桶」代表一个数据区间范围,里面可以放置一个或多个数据,就像一个容器。每个年级学生的年龄会在不同的区间范围,一个年龄区间可以是一个桶。

桶排序步骤:

  1. 设置 5 个桶:7(含)至 8 岁、8(含)至 9 岁、9(含)至 10 岁、10(含)至 11 岁、11(含)至 12 岁。
  2. 把所有年龄数据逐个放入对应的桶里。
  3. 把每个桶里的信息表按年龄大小排序(用所学排序方法分别完成桶内排序)。
  4. 依次取出 5 个桶里已排好序的信息表,按桶号顺序组合,全部信息表就排序完成了。

桶排序算法的一般步骤:(1)创建桶,确定区间范围和数量;(2)把所有数据逐个放入对应的桶中;(3)对每个桶内的数据进行排序;(4)按照桶的顺序把数据组合起来。

流程图:桶排序(分桶—桶内排序—合并)

开始创建桶,确定区间范围把数据逐个放入对应桶对各桶内数据分别排序按桶序合并,得到有序结果结束

2.桶排序的优势与不足

桶排序是一种化大为小、分而治之的问题分解思想。主要优势:

  • 面对大量数据,可划分成一定数量的桶分别处理。
  • 数据分布均匀时效率较高,不需要逐个比较交换全部数据。
  • 可灵活调整桶的数量,优化性能。

主要不足:需要预先知道数据范围;数据分布不均匀时某些桶数据过多,效率下降;大量重复数据也会增加排序时间。

本课无新基础语法;分桶用 if/elif。请直接载入练习。

弄清以上要点后,再进入下方 Python Online,体验按区间分桶的思想。

四、动手体验 · Python 3 Online 编程

五年级 · 桶排序思想:按分数段分桶。

五、课堂总结

  • 通过学习桶排序算法,知道面对较大的数据量时,可以使用桶排序,把数据量化大为小来解决问题。
  • 桶的数量和范围在桶排序中具有关键作用,要合理设置,才能发挥桶排序的作用。
  • 把大的数据量分解为小的数据量来处理,体现了问题分解的思想。日常学习生活中,要注重培养问题分解的思维能力。

六、拓展提升

  • 在学校组织的参观博物馆活动中,需要为来自不同年级五个班的同学安排车辆和座位。如果每个班安排一辆车,车辆座位数不够;如果每个班安排两辆车,每辆车都会有空位置。请你思考:如何规划同学乘车的问题?这个过程中是否存在算法?
  • 通过搜索引擎或生成式人工智能应用软件查找:还有哪些常用的排序算法?它们各有什么特点?排序算法可以解决哪些生活与学习问题?

测评

选出后点「检查」。答错会显示简短说明。

  1. 桶排序的基本步骤不包括下列哪一项?

  2. 桶排序体现了哪种思想?

  3. 桶排序中,桶的数量和范围有什么作用?

本节小结

桶排序先按区间分桶、桶内排序、再合并,体现化大为小的分治思想。合理设置桶的数量和范围,才能高效处理大量数据。