新闻列表
咨询热线:
187 - 6397 - 2757
排序是程序设计中重要的算法之一,比较基础的排序方法有冒泡法和选择法,今天我们用Scratch制作一个模拟冒泡法和选择法排序的程序。让我们先看看运行效果吧。
一、效果预览
点击小绿旗运行后,舞台区生产40个大小不同的红色棒图。根据提示按下键盘上的空格键可以通过输入1或2选择冒泡法排序和选择法排序。如果输入1,红色棒图按照冒泡法排序的规则从小到大排列;如果输入2,红色棒图按照选择法排序的规则从小到大排列。效果如图1所示。
图1 程序运行效果
二、冒泡法和选择法排序简介
1.冒泡法
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序与目标不符,就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
冒泡排序时,如果两个元素相等,是不会再交换的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并不会改变,所以冒泡排序是一种稳定排序算法。
2.选择法排序
选择排序(selection sort),另外一种计算机科学领域的较简单的排序算法。工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置或者末尾,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的起始位置或者末尾。以此类推,直到全部待排序的数据元素排完。
这种算法排序过程需要反复从未排序元素中选择最大或者最小元素,直至完成排序。因此,将这种算法称为选择排序算法。
由于在选择的过程中,相同的元素有可能改变初始排列顺序,所以选择排序是不稳定的。
三、程序制作过程
首先,从库中选择一个合适的背景图。然后需要导入红色线条素材,作为棒图角色(也可以绘制),然后再建立一个空白角色。设置完成后的背景和角色如图4所示,另外还导入一个合适的声音素材,作为排序完成后的提示音。
图2 程序角色列表
接下来就是制作程序积木块了。在制作程序积木块前,先设置如图3所示变量。其中,克隆体编号、克隆体大小为棒图角色的私有变量。
图3 程序中设置的变量
为了存放棒图角色克隆体的编号和大小数据,设置了两个列表,如图4所示。其中,克隆体编号列表用于存放克隆体的编号;随机数列表用于存放克隆体的大小。
图4 程序中设置的列表
背景中的脚本主要用于程序初始化,如图5所示
图5 背景中脚本
空白角色中主要有[当小绿旗被点击]事件下的脚本和[当按下空格键]事件下的脚本,如图6和图7所示,另外[当按下空格键]事件下的脚本中还用到了自定义积木,其功能如图8和图9所示。
图6 空白角色[当小绿旗被点击]事件下的脚本
图7空白角色[当按下空格键]事件下脚本
图8 寻找最大值自定义积木
图9 寻找最大值项自定义积木
棒图角色中脚本有[当接收到生成克隆体]事件下脚本、[当作为克隆体启动时]事件下脚本、[当接收移动克隆体冒泡法]事件下脚本、[当接收移动克隆体选择法]事件下脚本,分别如图10-13所示。
图10 棒图角色[当接收到生成克隆体]事件下脚本
图11 棒图角色[当作为克隆体启动时]事件下脚本
图12 棒图角色[当接收到移动克隆体冒泡法]事件下脚本
图13 棒图角色[当接收到移动克隆体选择法]事件下脚本
四、测试与总结
通过测试发现,冒泡排序法和选择排序法运行正常,可以直观地观察到排序的过程。本案例综合运用变量、列表和克隆的相关技巧模拟了冒泡排序和选择排序过程,适合具有一定编程基础的编程爱好者和小朋友学习。通过本案例的制作,可以进一步加深对变量积木、列表积木、克隆体操作积木、过程控制积木等的理解,有利于更熟练掌握它们的使用方法。制作时需要注意,克隆体编号和克隆体大小两个变量必须设置为“仅适用当前角色”。
速云少儿编程致力于 4 - 18 岁,山东少儿无人机编程教育机构,速云网络研发软件工程师授课少儿编程,教给孩子们不光要学习编程,还要结合编程知识给我们无人机写程序,实现我们无人机的自动启飞、人脸识别、智能跟随,包括更加高级的编程玩法,就是无人机编舞。可能家长想了!四岁孩子能学习无人机编程吗?那我们看个四岁的小同学吧,你自己看看能不能学习吧!
我们来看一看四岁小朋友的学习视频吧!
家长担心孩子们真的能听懂课程吗?在每节课即将结束的时候我们都会进行课程汇报展示,来看一下小童鞋的汇报成果吧!
这个时候家长可能说了,我们四岁的孩子,年龄辣么小,又不认字,那该如何学习呢?
其实四岁、五岁的孩子不认字怎么学习?只要孩子识别颜色就可以学习。通过颜色识别具体编程积木,比如:蓝色是运动、紫色是外观、黄色是事件等等,通过颜色识别文字,根据颜色先实现出程序做出卡通的效果,以激发孩子兴趣,使孩子产生兴趣后开始具体学习每个积木的作用,再学习积木上面的文字。如下图:
这个时候你还认为编程难吗?其实针对4岁起,就已经可以学习编程了。通过搭积木的方式让孩子学习编程。
当然,比如我们下面的无人机编程视频吧!
无人机能六架一起起飞?没错!那他又和数学有什么关系呢?
小云说啦!这是根据我们数学中的坐标轴的 x轴 y轴 初始化无人机位置,无人机与无人机之间的距离、架数的多少,全部需要通过精密的计算,否则无法编排出理想的造型。
现在作为家长的你!还在纠结无人机编程是否对孩子有帮助吗?
无人机编程能做什么?人脸识别?智能跟随?自动飞行?还有吗?
答案:有!那就是"无人机编舞"!不知道无人机如何编舞?快看下面我们速云小童鞋的无人机编舞吧!!
无人机编程都学习哪些内容呢?
让无人机与编程结合?
没错!就是要让孩子“动手”+“编程”实现无人机起飞。
重点培养孩子逻辑思维能力与动手操作能力,让孩子在编写无人机程序的时,无形的锻炼孩子的逻辑思维能力和前沿科技的运用能力,在飞行学习中,孩子们需了解飞机的机械结构,练习手眼协同能力,甚至自己组装飞行器;在编程中,无人机可以在三维空间中,用摄像头完成巡线、人脸识别等人工智能任务。
例如:人脸识别,智能跟随,红外线定稿,光流定位、无人机编舞等。
看我们小童鞋们上课视频吧
坦克编程都学习哪些内容呢?
动手组装”+“编写程序”
通过编程将抽象理论与实践操作合二为一,让孩子重新理解知识,体验人工智能,培养独立思考的习惯和动手解决问题的能力。
课程涉及机器人拼装、力学等数理知识,运用六类人工智能模块,编写专属的自动驾驶算法程序,让孩子更加深入理解人工智能技术。
例如:人脸识别、智能跟随等前沿技术。