Scratch

状课网-少儿编程网课专业平台

Scratch Scratch不能实现冒泡法和选择法排序?

发布时间:2021-12-08 13:55:21 浏览 0

  排序是程序设计中重要的算法之一,比较基础的排序方法有冒泡法和选择法,今天我们用scratch制作一个模拟冒泡法和选择法排序的程序。让我们先看看运行效果吧。

一、效果预览

  点击小绿旗运行后,舞台区生产40个大小不同的红色棒图。根据提示按下键盘上的空格键可以通过输入1或2选择冒泡法排序和选择法排序。如果输入1,红色棒图按照冒泡法排序的规则从小到大排列;如果输入2,红色棒图按照选择法排序的规则从小到大排列。效果如图1所示。

Scratch不能实现冒泡法和选择法排序?

图1 程序运行效果

二、冒泡法和选择法排序简介

1.冒泡法

  冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序与目标不符,就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。

  这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

  冒泡排序时,如果两个元素相等,是不会再交换的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并不会改变,所以冒泡排序是一种稳定排序算法。

2.选择法排序

  选择排序(selection sort),另外一种计算机科学领域的较简单的排序算法。工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置或者末尾,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的起始位置或者末尾。以此类推,直到全部待排序的数据元素排完。

  这种算法排序过程需要反复从未排序元素中选择最大或者最小元素,直至完成排序。因此,将这种算法称为选择排序算法。

  由于在选择的过程中,相同的元素有可能改变初始排列顺序,所以选择排序是不稳定的。

三、程序制作过程

  首先,从库中选择一个合适的背景图。然后需要导入红色线条素材,作为棒图角色(也可以绘制),然后再建立一个空白角色。设置完成后的背景和角色如图4所示,另外还导入一个合适的声音素材,作为排序完成后的提示音。

Scratch不能实现冒泡法和选择法排序?

图2 程序角色列表

  接下来就是制作程序积木块了。在制作程序积木块前,先设置如图3所示变量。其中,克隆体编号、克隆体大小为棒图角色的私有变量。

Scratch不能实现冒泡法和选择法排序?

图3 程序中设置的变量

  为了存放棒图角色克隆体的编号和大小数据,设置了两个列表,如图4所示。其中,克隆体编号列表用于存放克隆体的编号;随机数列表用于存放克隆体的大小。

Scratch不能实现冒泡法和选择法排序?

图4 程序中设置的列表

  背景中的脚本主要用于程序初始化,如图5所示

Scratch不能实现冒泡法和选择法排序?

图5 背景中脚本

  空白角色中主要有[当小绿旗被点击]事件下的脚本和[当按下空格键]事件下的脚本,如图6和图7所示,另外[当按下空格键]事件下的脚本中还用到了自定义积木,其功能如图8和图9所示。

Scratch不能实现冒泡法和选择法排序?

图6 空白角色[当小绿旗被点击]事件下的脚本

Scratch不能实现冒泡法和选择法排序?

图7空白角色[当按下空格键]事件下脚本

Scratch不能实现冒泡法和选择法排序?

图8 寻找最大值自定义积木

Scratch不能实现冒泡法和选择法排序?

图9 寻找最大值项自定义积木

  棒图角色中脚本有[当接收到生成克隆体]事件下脚本、[当作为克隆体启动时]事件下脚本、[当接收移动克隆体冒泡法]事件下脚本、[当接收移动克隆体选择法]事件下脚本,分别如图10-13所示。

Scratch不能实现冒泡法和选择法排序?

图10 棒图角色[当接收到生成克隆体]事件下脚本

Scratch不能实现冒泡法和选择法排序?

图11 棒图角色[当作为克隆体启动时]事件下脚本

Scratch不能实现冒泡法和选择法排序?

图12 棒图角色[当接收到移动克隆体冒泡法]事件下脚本

Scratch不能实现冒泡法和选择法排序?

图13 棒图角色[当接收到移动克隆体选择法]事件下脚本

四、测试与总结

  通过测试发现,冒泡排序法和选择排序法运行正常,可以直观地观察到排序的过程。本案例综合运用变量、列表和克隆的相关技巧模拟了冒泡排序和选择排序过程,适合具有一定编程基础的编程爱好者和小朋友学习。通过本案例的制作,可以进一步加深对变量积木、列表积木、克隆体操作积木、过程控制积木等的理解,有利于更熟练掌握它们的使用方法。制作时需要注意,克隆体编号和克隆体大小两个变量必须设置为“仅适用当前角色”。

  本案例制作过程得到了网友“沈阳Marvin蓝色天空”的帮助和指导,这里对您表示感谢。  

  文章来源:汤老师教你学Scratch编程

本文链接:https://www.ascratch.com/news/17830.html

上一篇:Scratch编程制作舞台亮度控制-巧用变量实现双向开关功能 下一篇:返回列表