Scratch中的冒泡排序

一、冒泡排序的概念

冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

二、冒泡排序的算法原理

1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。

2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

3.针对所有的元素重复以上的步骤,除了最后一个。

4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

三、冒泡排序的视频演示

四、冒泡排序的步骤解析

一串未排序的数字(10,5,16,25,3,6,82,13),采用冒泡排序从小到大进行排序的步骤解析:(红色字体表示交换的数值)

10,5,16,25,3,6,82,13(原数列)

5,10,16,25,3,6,82,13

5,10,16,3,25,6,82,13

5,10,16,3,6,25,82,13

5,10,16,3,6,25,13,82(第一轮结束,将最大值的82放在了最后一位)

5,10,3,16,6,25,13,82

5,10,3,6,16,25,13,82

5,10,3,6,16,13,25,82(第二轮结束,将第二大的25放在了倒数第二位)

5,3,10,6,16,13,25,82

5,3,6,10,16,13,25,82

5,3,6,10,13,16,25,82(第三轮结束,将第三大的16放在了倒数第三位)

3,5,6,10,13,16,25,82(第四轮结束)

五、用Scratch实现冒泡排序

我们要如何用Scratch来实现从左下图变成右下图的效果呢?

  • 第一步:先创建一个“冒泡排序”的列表

  • 第二步:插入乱序的数列(例如:10,5,16,25,3,6,82,13)

  • 第三步:从第一个数据开始,对上一个数据和下一个数据进行比较,若满足,不需要交换位置,若不满足,需要交换位置

解析:为什么需要“中介”的变量呢?是因为,如果我们没有“中介”的变量,是无法进行两个数据的交换的,所以得运用“中介”的变量,将其中的一个数据先存储进去,然后才能进行交换操作。

  • 第四步:内层循环的循环次数每循环完一次,循环次数减一

解析:对于循环的次数,我们在上面演示的时候,发现每一轮排完的时候,最大值已经固定在数列的最后方,所以每次循环完,循环的次数减一,代码我们是采用了变量i,变量i的作用就是让其每次循环完一次,变量增加1,进而循环的次数=列表项目数-i。

  • 第五步:外层循环的次数

解析:为什么还需要外层循环呢?是因为我们从第一项对比到最后一项,又继续从头开始遍历,所以,重复执行的次数是列表的项目数次。变量j的作用是让其不断的更新对比的项数,例如对比第j项和第j+1项的意思就是上一项和下一项做比较,比较完了之后,变量j就加1。

完整代码:

那么这样就完成Scratch中的冒泡排序啦!

冒泡排序是一种经典的排序算法,适用于初学者理解排序的基本原理。在Scratch中实现冒泡排序,可以通过图形化编程的方式帮助学生更直观地理解其工作流程。 ### 实现冒泡排序的步骤 冒泡排序的核心思想是通过多次遍历列表,依次比较相邻的两个元素,并在顺序错误时交换它们。这个过程会将较大的元素逐渐“浮”到数列的末尾,就像气泡上升一样,因此得名“冒泡排序”。 在Scratch中,通常需要以下几个步骤来实现冒泡排序: 1. **初始化列表**:首先定义一个列表(如“数值列表”),并填充一些随机数作为待排序的数据。 2. **外层循环控制轮数**:使用一个变量(如“轮次”)控制整个排序的轮数,一般为列表长度减一。 3. **内层循环进行比较和交换**:在每一轮中,遍历列表中的元素,从第一个开始,依次比较相邻的两个元素。如果前一个元素大于后一个元素,则交换它们的位置。 4. **优化机制**:可以引入一个标志变量(如“是否交换”)来检测某一轮是否有交换发生。如果没有交换,则说明列表已经有序,可以提前结束排序。 ### Scratch实现示例 以下是一个简单的Scratch冒泡排序的逻辑描述(伪代码形式): ```scratch 当点击旗帜 删除列表 [数值列表] 添加随机数到列表 设置变量 [轮次] 为 0 重复执行 (列表长度 - 1) 次 设置变量 [i] 为 1 设置变量 [是否交换] 为 否 重复执行 (列表长度 - 轮次 - 1) 次 如果 (数值列表[i] > 数值列表[i+1]) 替换数值列表[i] 和 数值列表[i+1] 设置变量 [是否交换] 为 是 end 改变 [i] 为 i + 1 end 如果 [是否交换] = 否 停止全部脚本 end 改变 [轮次] 为 轮次 + 1 end ``` ### 动画与可视化增强 在Scratch中,可以通过添加动画效果来提升学习体验。例如,可以让角色在比较时做出动作(如跳跃或改变颜色),从而更直观地展示排序过程中元素的变化[^5]。 ### 教学意义 冒泡排序虽然效率不如快速排序或归并排序,但其简单易懂的特点使其成为教学中常用的入门算法。它综合考查了Scratch中的多种编程概念,包括条件判断、循环控制、列表操作等[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值