单元五 · 把数据排列有序

第18课 冒泡排序齐体验(1)

任务场景
任务场景:冒泡排序齐体验(1)

一、学习目标

  • 通过「排队」游戏,体验冒泡排序算法的思想,培养用算法解决问题的能力。
  • 初步认识冒泡排序算法,能够用自然语言描述冒泡排序算法的执行步骤。

二、情境导入

有一种较直观的排序算法被形象地称为冒泡排序。在用这个算法排序的过程中,数值大的数会像泡泡一样,一个接一个地逐渐从数据序列中「浮」出来,从而完成排序任务。一起来学习体验这个有趣的排序算法吧!

三、核心讲解

本课学习路径:

1体验冒泡排序的过程
2算法与用计算机解决问题

1.体验冒泡排序的过程

以把一组数从小到大排列为例,冒泡排序就是在一组无序的数中,从前面开始,比较相邻两个数的大小,再根据比较结果交换两个数的位置,如此循环,直到把整组数排列有序为止。数值大的数会像泡泡一样,逐渐从序列的前面「浮」到后面。通常有两种冒泡方式:把大的数冒泡到后面,或把小的数冒泡到前边。

请 5 至 10 位同学站成一排,每人随机抽取一张数值卡片,按照卡片上的数由小到大排队,同时指定一名同学填写活动任务单。

游戏规则:

  1. 依次对相邻两位同学卡片上的数进行比较。若左侧比右侧大,两位同学交换位置;否则保持原位置。完成后,最右侧同学手持的数就是最大数。
  2. 除最后一位同学外,对其余同学重复以上操作。
  3. 持续对越来越少需要排序的卡片进行比较与交换,直到没有任何两位同学需要交换位置。

想一想:

  1. 冒泡排序每一轮分别固定了什么数,有什么特点?
  2. 从第二轮开始,排序时可以简化哪一步?要比较几次?

用自然语言描述冒泡排序算法:

  1. 比较相邻的两个数,如果第一个比第二个大,就交换位置。对每一对相邻数进行同样操作,操作后排在最后面的数就是最大数。
  2. 除已排序的数,重复第 1 步,对其余数进行比较与交换,直到没有任何一对数需要交换位置。

流程图:冒泡排序(相邻比较交换)

开始从前往后取相邻两数左侧更大则交换位置一轮后最大数归位缩小未排序区间并重复无交换则结束,得到有序序列结束

2.算法与用计算机解决问题

有的同学认为只对少量数排序时,反复比较、交换很麻烦,这种方法显得很「笨」。你是否也有类似的想法呢?

算法的作用:在用计算机解决问题时,算法提供明确的求解步骤,是实现自动化和智能化的基础。计算机可以自动执行任务、处理大量数据、依据判断条件决策,提高解决问题的智能化水平。针对同一问题,不同算法可能产生不同方案,通过比较可选择更优算法。

本课无新基础语法;冒泡过程在编程中观察。嵌套 for 与交换沿用已学语法。

弄清以上要点后,再进入下方 Python Online,体验冒泡排序的交换过程。

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

五年级 · 冒泡(1):观察交换过程。

五、课堂总结

  • 冒泡排序算法的关键点是比较相邻的两个数,从而找到最大数或最小数并交换到指定位置。
  • 再对其余数重复这一操作,持续对越来越少的数进行比较与交换,直到没有任何数需要交换。
  • 学习冒泡排序,可以更好地认识排序算法的基本思想和执行步骤,提升解决问题的能力。

六、拓展提升

  • 跳绳数据比一比。按照小组同学的学号或座位顺序,把写有小组同学跳绳数据的卡片排成一排,然后依据冒泡排序算法,按照跳绳数据从大到小的顺序排序。两人一组,一人摆放,一人记录每轮数据卡片的位置。

测评

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

  1. 冒泡排序每一轮结束后,通常能确定什么?

  2. 冒泡排序的关键操作是?

  3. 为什么把这种排序算法称为「冒泡排序」?

本节小结

冒泡排序靠相邻比较与交换,每轮把最值「冒」到正确位置;虽步骤多,但思想直观,且适合用计算机自动执行。