
哈喽,小朋友们!又见面啦!今天我们要一起探索另一个超级有趣的Scratch程序——选择排序!这个程序和冒泡排序有点像,但又有自己的特色,是不是很好奇呀?
真正的课程导入语:同学们!你们想知道除了冒泡排序,还有什么有趣的排序方法吗?今天的Scratch课堂,我们就要解锁超酷炫的"选择排序"程序!想象一下:这次我们不是两两交换,而是先找到最小的那个数,然后把它"选"到正确的位置,是不是听起来也很神奇?

通过这节课,我们会了解到选择排序和冒泡排序有什么不同,如何找到最小的数,如何让多个角色配合工作,更能锻炼我们的逻辑思维和创造力。比如,你知道什么是选择排序吗?你知道怎么用一个箭头来标记找到的最小数吗?你知道选择排序和冒泡排序哪个更有效率吗?
接下来,就让我们一起化身小小算法设计师,用积木搭建属于自己的选择排序程序,看看谁能最快理解选择排序的原理!准备好开启这场编程冒险了吗?现在,Let's code!

(扫码体验或公众号回复“选择排序”获取素材、源码、课件)

排序动画:先找到最小的数,然后把它"选"到正确的位置,直观易懂!
双箭头指示:有两个箭头,一个扫描所有数,一个标记找到的最小数,帮助理解!
视觉效果:每个小柱子有不同的颜色,交换位置时有动画效果。
音乐伴奏:排序过程中会有音乐伴奏,让排序更有趣。
语音讲解:程序会自动讲解排序的每一步,帮助你理解。
交互控制:你可以按空格键或右方向键控制排序的节奏。
庆祝效果:排序完成后会有粒子特效和庆祝动画!
标题动画:开始时有漂亮的标题动画,还有小角色移动,吸引注意力。
小朋友们,在开始讲解代码之前,让我们先学习一下什么是选择排序!这个知识会帮助我们理解程序是怎么工作的哦!
选择排序也是一种超级简单的排序方法!它的原理就像我们在队伍里找最矮的同学,然后把他"选"到队伍的最前面。
举个例子:假设我们有几个数字:5, 3, 8, 1, 4
我们要把它们从小到大排好队,变成:1, 3, 4, 5, 8
选择排序是怎么做的呢?
先从所有数里找到最小的那个数(1)
把它和第一个位置的数交换
然后从剩下的数里找到最小的那个数(3)
把它和第二个位置的数交换
重复上面的步骤,直到所有的数都排好队
是不是很简单?就像体育课上排队,先找到最矮的同学,让他站到最前面;然后在剩下的同学里找到最矮的,让他站到第二个位置;就这样一直选,直到所有人都排好队!
选择排序 vs 冒泡排序:
冒泡排序:两两比较,交换次数多,像泡泡一样浮起来
选择排序:先找最小的,再交换,交换次数少,像选人一样
好啦,排序知识学完了!现在让我们一起来看看程序的代码吧!
【角色:Title】代码截图

这个角色是程序的标题,负责显示标题动画、小角色移动并启动程序。
实现原理讲解:
Title角色就像是一场精彩演出的开场幕布!当程序启动时,它会通过克隆技术来创建多个标题造型,还有一个特别的小角色会移动并播放音乐。
工作原理:
当绿旗被点击时,Title角色会移到屏幕中央,设置幽灵特效和大小
然后它会克隆自己三次,每次用默认造型
等待3秒钟后,广播'start'消息,告诉其他角色"节目开始啦!"

小知识:小角色移动公式!这里有一个有趣的公式,让第3个造型的克隆体(小角色)移动:每次移动距离:((-8 - 当前X坐标) / 4)
让我用简单的话解释一下:
首先,小角色等待0.6秒
然后移到x:-120, y:0的位置
清除所有特效
重复23次,每次移动 ((-8 - 当前X坐标) / 4) 的距离,分4次慢慢移动到目标位置
然后面向一个方向,重复31次,用sin函数和右转6度来创造波浪移动效果
最后重复25次,移回x:0的位置
波浪移动公式:X坐标增加:sin(方向) * 1.8
这里也用到了sin三角函数!随着方向不断右转6度,sin值会上下变化
这样小角色就会像波浪一样左右移动,很有趣!

其他克隆体的动画:
第1个和第2个造型的克隆体会显示自己,然后重复15次,慢慢向上移动并增加幽灵特效

音乐部分的原理:
Title角色不仅负责视觉效果,还负责音乐氛围的营造
它会同时运行多个音乐脚本,播放不同的音符组合,形成悦耳的背景音乐

程序开始后的处理:
当接收到'start'广播时,标题克隆体会重复7次,增加大小和幽灵特效,然后删除自己

小角色的音乐:
第3个造型的克隆体(小角色)还会播放音乐!
它会设置乐器,等待0.6秒,然后播放多个音符
再等待0.6秒,继续播放更多音符
与其他角色的关系:
Title角色是整个程序的"总指挥",它通过广播'start'消息来启动整个程序
它的小角色移动和音乐为整个开场增添了趣味
它的音乐和视觉效果为整个程序奠定了基调
【角色:Bars】代码截图

这个角色是排序的可视化核心,负责显示代表数字的小柱子,让我们能直观地看到排序过程!
实现原理讲解:
Bars角色就像是排序过程的"舞台演员",每个小柱子都代表一个数字,柱子的高度就对应数字的大小。
生成小柱子的原理:
当接收到'start'广播时,Bars角色会开始克隆自己,为Data列表中的每个数字创建一个小柱子
它会先设置好index、value、Length变量,设置乐器,切换到默认造型
然后重复Length次,每次将index增加1,克隆自己,等待0.04秒,切换到下一个造型
最后将index设置为0
为什么要这样设计?
使用克隆技术而不是创建多个角色,是因为我们不知道会有多少个数字需要排序,克隆可以动态生成
每个小柱子都有自己的index变量,用来记住自己是第几个,这样在交换位置时就知道该去哪里了
不同的颜色让我们更容易区分不同的小柱子

克隆体的动画原理:
每个小柱子克隆体都有一个精彩的出场动画:从小小的、半透明的状态,慢慢变大、慢慢清晰,同时平滑移动到正确的位置
小柱子的大小是根据Data列表中对应位置的数字来决定的:数字越大,柱子越高!
小柱子还会使用平滑移动技术,不是一下子跳到目标位置,而是慢慢移过去,看起来就像动画一样流畅
小知识:神奇的位置计算公式!这里有一个很重要的数学公式,用来计算小柱子应该移到哪里:目标位置公式:((((0 - (数字个数 / 2)) + (index - 0.5)) * 26)
让我用简单的话解释一下这个公式:
首先算出中间位置:0 - (数字个数 / 2),这样可以让所有小柱子居中显示
然后加上 (index - 0.5) * 26,每个小柱子之间相隔26个单位,index是小柱子的编号
最后,每次只移动 (目标位置 - 当前位置) / 4 的距离,分4次慢慢移动过去,这样就有平滑动画的效果了!
Y坐标的计算公式更简单:(-60 - 当前Y坐标) / 4,目标是让小柱子移动到Y=-60的位置,也是分4次慢慢移动过去。
是不是很聪明?通过数学公式,我们可以让小柱子整齐地排成一排!
小知识在这里!
每个小柱子的大小根据数值调整,数值越大,柱子越高!
使用平滑移动让小柱子慢慢移动到正确的位置,就像动画一样!

初始化音乐:
当作为克隆体启动时,有些克隆体还会播放音符,设置音量,为整个程序营造音乐氛围

等待和庆祝时的音乐:
有些克隆体会等待条件成立,然后播放多个音符
排序完成后的庆祝动画也会播放音乐



交换位置的原理:
当接收到'swap'广播时,Bars角色会检查Swap列表,看看是不是自己需要交换位置
如果是,它会更新自己的index和value,然后平滑移动到新位置
同时还会更新Data列表中的数据,确保数据和视觉保持一致
交换完成后,小柱子会切换回默认造型,确保颜色正确
小知识:交换时的平滑移动公式!交换时使用的公式和出场时类似,但是有一个小区别:每次移动距离:(目标位置 - 当前位置) / 3
为什么是除以3而不是除以4呢?
因为交换时希望动画快一点,所以分3次移动完成,而不是4次
数字越小,每次移动的距离越大,动画就越快
这样交换过程既流畅又不会太慢,节奏刚刚好!
是不是很巧妙?通过改变除数,我们可以控制动画的速度!

排序完成后的庆祝动画:
当接收到'all sorted'广播时,说明排序完成啦!小柱子会先慢慢消失一会儿
然后每个小柱子都会上下跳动,庆祝排序成功!
前面的小柱子跳得少,后面的跳得多,看起来就像波浪一样!
小知识在这里!
排序完成后,小柱子会上下跳动,庆祝排序成功!
每个小柱子跳的次数和它的位置有关,前面的跳得少,后面的跳得多,就像波浪一样!

初始化数据:
当绿旗被点击时,Bars角色还会初始化Data列表,设置好要排序的数字
与其他角色的关系:
Bars角色是整个可视化的核心,它和Arrow、Caption、Next等角色紧密配合
它通过接收'start'广播来开始生成小柱子
它通过接收'swap'广播来交换小柱子的位置
它通过接收'all sorted'广播来展示庆祝动画
它的数据变化会同步更新Data列表,确保整个程序的数据一致性
【角色:Arrow】代码截图


这个角色是排序过程的"小老师",它有两个箭头!一个用来扫描所有数找最小值,另一个用来标记找到的最小值,帮助我们理解选择排序过程!
实现原理讲解:
Arrow角色就像是排序过程中的"双指挥棒":一个负责扫描检查,一个负责标记重点!
初始化:
当绿旗被点击时,Arrow角色会先隐藏自己,等待合适的时机再出现

排序总指挥:
当接收到'start'广播时,Arrow角色就开始工作了!它是整个排序过程的"总指挥"
首先等待1.8秒,将Minimum变量设置为0,克隆自己(这样就有两个箭头了!)
然后按照选择排序的步骤,一步步地执行:等待用户输入、显示讲解、移动箭头、寻找最小值、标记最小值、交换位置
每一步都会等待用户按空格键或右方向键,让学习者可以按自己的节奏学习
它会调用自己的过程来移动箭头、显示讲解
它会用Minimum变量来记录找到的最小值的位置
如果需要交换位置,它会替换Swap列表,然后广播'swap'消息,让Bars角色执行交换动画
排序完成后,它会广播'all sorted'消息,触发庆祝动画
为什么要这样设计?
Arrow角色就像一个小老师,一步步地指导排序过程,让学习更有条理
用两个箭头:一个扫描,一个标记,让选择排序的过程更直观
等待用户输入让学习者可以停下来思考,理解每一步在做什么
使用过程把重复的代码封装起来,让程序逻辑更清晰
通过广播消息让其他角色配合工作,实现了角色之间的协作

箭头移动的过程:
Arrow角色有几个专门的过程来处理箭头的移动和显示
这些过程会:广播'read'消息、切换箭头造型、设置位置、使用幽灵特效慢慢显示出来
箭头会平滑移动到正确的位置,指着当前正在扫描或标记的小柱子
有些过程还会让箭头慢慢消失,为下一步做准备
克隆箭头的原理:
Arrow角色会克隆自己,这样就有两个箭头了!
克隆体启动时会切换到默认造型,移到最前面,显示自己,设置幽灵特效,将index设置为0
然后它会等待条件成立,重复执行:
等待条件成立
如果Minimum=0,就调用过程
否则,就设置X和Y坐标,设置幽灵特效,重复25次慢慢显示出来
还有另一个脚本:等待1秒,然后重复执行:
等待条件成立
如果Minimum=0,就等待0.05秒,将index设置为Minimum
否则,就设置乐器,播放音符,将index设置为Minimum,播放更多音符


交换时的配合:
当接收到'swap'广播时,如果造型编号小于3,Arrow角色会将Minimum设置为0,调用过程

消失过程:
Arrow角色还有一个过程,会重复10次,增加幽灵特效,慢慢移动,让箭头消失

与其他角色的关系:
Arrow角色是整个排序过程的"总指挥",它协调着其他所有角色的工作
它通过克隆自己来创建第二个箭头,一个扫描,一个标记
它通过广播'wait for input'消息让Next角色等待用户输入
它通过广播'next caption'消息让Caption角色显示讲解
它通过广播'hide caption'消息让Caption角色隐藏讲解
它通过广播'swap'消息让Bars角色交换小柱子
它通过广播'all sorted'消息让所有角色知道排序完成了
它通过广播'read'消息来触发朗读
它和Algorithm角色虽然没有直接通信,但它们都实现了选择排序算法,一个负责可视化教学,一个负责算法逻辑
【角色:Caption】代码截图

这个角色是排序过程的"讲解员",它会显示文字讲解,告诉我们每一步在做什么!
实现原理讲解:
Caption角色就像是排序过程中的"黑板",它会用文字把每一步的操作都写出来,帮助我们理解。
初始化:
当绿旗被点击时,Caption角色会先隐藏自己,设置好幽灵特效,切换到默认造型

切换讲解的原理:
当接收到'next caption'广播时,Caption角色会切换到下一个造型(每个造型就是一段讲解文字)
它会使用幽灵特效慢慢显示出来,让文字看起来不是突然出现的,而是慢慢浮现的,过渡更自然

开始显示讲解:
当接收到'start'广播时,Caption角色会等待1秒钟,然后显示自己,并广播'next caption'消息,开始显示第一段讲解

隐藏讲解:
当接收到'hide caption'广播时,Caption角色会重复12次,增加幽灵特效,慢慢消失
与其他角色的关系:
Caption角色是排序过程的"讲解员",它和Arrow角色紧密配合
它通过接收'next caption'广播来切换讲解内容
它通过接收'hide caption'广播来隐藏讲解
它的文字讲解让学习更清晰
【角色:Next】代码截图

这个角色是排序过程的"遥控器",它会检测你的键盘输入,让你可以按自己的节奏学习!
实现原理讲解:
Next角色就像是排序过程中的"互动助手",它会提示你什么时候可以按键继续,还会播放各种音效!
初始化:
当绿旗被点击时,Next角色会先隐藏自己,设置好乐器,等待合适的时机再出现

键盘检测:
当你按下空格键或右方向键时,Next角色会检测到,如果它正在等待输入(X坐标小于240),就会停止其他脚本,广播'advance'消息,让程序继续下一步
它还会平滑移动到新位置,给你一个视觉反馈


等待输入时的动画:
当接收到'wait for input'广播时,Next角色会移到指定位置,面向方向,显示自己
然后它会像波浪一样左右移动,同时慢慢旋转,提示你"可以按键啦!"
这个动画很有趣,就像在向你招手一样!
当你按键后,它会广播'advance'消息,然后平滑移走
小知识:神奇的波浪移动公式!这里有一个超级有趣的数学公式,让Next角色像波浪一样移动:目标位置公式:214 + (sin(方向) * 2)
让我用简单的话解释一下这个公式:
首先有一个基础位置:214
然后加上 sin(方向) * 2,这是三角函数!
什么是sin呢?想象一下时钟的指针,随着角度变化,指针的高度会上下变化,sin就是用来计算这个的!
这里我们用sin来让角色左右移动,就像波浪一样!
每次只移动 (目标位置 - 当前位置) / 4 的距离,分4次慢慢移动,加上每次右转8度,就有了波浪般的效果!
是不是很神奇?通过三角函数,我们可以创造出漂亮的波浪动画!
小知识在这里!
Next角色会像波浪一样左右移动,提示你可以按键继续!
右转8度让角色有一个旋转的效果,更生动!


音效系统:
Next角色还是整个程序的"音效师"!它会根据不同的事件播放不同的音符:
当接收到'advance'广播时,播放推进的音效
当接收到'read'广播时,播放朗读的音效
当接收到'swap'广播时,播放交换的音效
当接收到'all sorted'广播时,播放庆祝的音效
这些音效让整个程序更生动,有反馈感!

与其他角色的关系:
Next角色是用户和程序之间的"桥梁",它让用户可以按自己的节奏学习
它通过接收'wait for input'广播来等待用户输入
它通过广播'advance'消息来告诉程序继续下一步
它通过接收'read'、'swap'、'all sorted'等广播来播放对应的音效
它的动画提示让用户知道什么时候可以按键,交互更友好
【角色:Algorithm】代码截图

这个角色是排序算法的核心,负责实际的排序逻辑!
实现原理讲解:
Algorithm角色就像是排序过程的"大脑",它实现了完整的选择排序算法!
选择排序算法实现:
Algorithm角色有一个专门的过程来执行选择排序算法
它使用嵌套循环:外层循环控制当前位置,内层循环负责寻找最小值
首先将Beginning设置为0,然后重复(数字个数-1)次:
如果当前的数比Value of Minimum小,就更新Minimum为当前的位置,更新Value of Minimum为当前的数
将Index增加1,继续看下一个
将Beginning增加1,这是当前要填充的位置
将Index设置为Beginning,从这里开始找
将Value of Minimum设置为无穷大,先假设一个很大的数
然后重复(数字个数 - Beginning + 1)次,从Beginning开始往后找:
找到最小值后,交换Beginning位置和Minimum位置的数
选择排序算法在这里!这是整个程序的核心!
让我用简单的话解释一下:
外层循环控制我们现在要把哪个位置填好
内层循环从当前位置开始,往后找最小的数
用Value of Minimum变量记录找到的最小值,用Minimum变量记录它的位置
找到最小值后,把它和当前位置的数交换
这样,每一轮结束后,当前位置就会是剩下的数里最小的那个!
是不是很聪明?这就是选择排序的原理!

讲解部分:
Algorithm角色还会用"说..."来讲解排序的每一步
它会调用过程,然后继续讲解
为什么要这样编写?
使用嵌套循环实现选择排序算法,逻辑清晰
Value of Minimum变量用于记录当前找到的最小值
Minimum变量用于记录最小值的位置
每一轮只交换一次,比冒泡排序交换次数少
算法清晰易懂,适合学习
与其他角色的关系:
Algorithm角色虽然不和其他角色直接通信,但它是整个程序的"算法核心"
它和Arrow角色都实现了选择排序算法,一个负责纯粹的算法逻辑,一个负责可视化教学
它的存在让整个程序的算法逻辑更完整,可以独立运行排序算法
【角色:Effect】代码截图

这个角色是排序过程的"魔法师",它会制造闪光特效,让程序更生动!
实现原理讲解:
Effect角色就像是排序过程中的"灯光师",它会在小柱子上制造闪光效果,让程序看起来更精彩!
初始化:
当绿旗被点击时,Effect角色会先隐藏自己,等待合适的时机再出现

闪光特效的原理:
Effect角色有一个专门的过程来制造闪光效果
它会先显示自己,然后重复多次增加幽灵特效,制造闪烁的效果
就像闪光灯一样,一会儿亮一会儿暗,很炫酷!

显示特效的流程:
当接收到'start'广播时,Effect角色会等待1秒钟,然后移到第一个小柱子的位置
然后它会等待条件成立,调用闪光过程,在小柱子上制造闪光效果
接着它会将X坐标增加26,移到下一个小柱子的位置,重复上面的步骤
直到所有小柱子都有过闪光效果!
为什么要这样设计?
闪光特效让程序更生动,吸引注意力
每个小柱子都有特效,视觉效果更好
重复多次增加幽灵特效,制造闪烁效果,就像闪光灯一样
与其他角色的关系:
Effect角色为整个程序增添了视觉效果,让程序更有趣
它通过接收'start'广播来开始显示特效
它和Bars角色配合,在小柱子上制造闪光效果
【角色:Particles】代码截图

这个角色是排序完成后的"庆祝使者",它会生成漂亮的粒子特效,庆祝排序成功!
实现原理讲解:
Particles角色就像是排序完成后的"烟花表演师",它会在排序完成时生成漂亮的粒子特效,让庆祝更热闹!
生成粒子的原理:
当接收到'all sorted'广播时,说明排序完成啦!Particles角色会开始工作
它会移到左边,然后重复12次,每次克隆3个自己,每次X坐标增加10
这样就会生成36个粒子!

粒子的运动原理:
当作为克隆体启动时,粒子会显示自己,面向一个方向
它会设置一个随机的速度(8到16之间),让每个粒子的速度都不一样
然后它会重复移动,每次移动speed步,然后把speed除以1.2,让速度慢慢变小
接着它会使用幽灵特效慢慢消失,同时继续移动,最后删除自己
小知识:神奇的速度衰减公式!这里有一个很有意思的数学公式,让粒子慢慢停下来:速度更新公式:speed = speed / 1.2 (第一阶段)速度更新公式:speed = speed / 1.1 (第二阶段)
让我用简单的话解释一下这个公式:
首先,每个粒子有一个随机的初始速度:8到16之间
第一阶段,每次移动后,速度变成原来的 1/1.2,也就是速度会慢慢变小
第二阶段,每次移动后,速度变成原来的 1/1.1,衰减得更慢一点
这样粒子就会越飞越慢,最后停下来,就像有摩擦力一样!
同时,粒子还会慢慢增加幽灵特效,最后消失不见
为什么要用1.2和1.1呢?
除以1.2,速度衰减得快一点,粒子很快就慢下来
除以1.1,速度衰减得慢一点,粒子可以飞得更远一点
两个阶段配合起来,粒子的运动就更自然了!
是不是很聪明?通过数学公式,我们可以模拟出摩擦力的效果!
小知识在这里!
排序完成后会有粒子特效,庆祝排序成功!
每个粒子的速度是随机的,所以粒子会散开得很自然!
速度慢慢变小,粒子会慢慢停下来,最后消失!
为什么要这样设计?
使用克隆技术创建多个粒子,避免创建多个角色
随机速度让粒子散开得更自然,看起来更真实
速度慢慢变小,模拟摩擦力,让粒子慢慢停下来
幽灵特效让粒子慢慢消失,视觉效果更好,不会突然消失
与其他角色的关系:
Particles角色是排序完成后的"庆祝使者",它通过接收'all sorted'广播来开始工作
它生成的粒子特效让庆祝更热闹,更有成就感
它和Bars角色、Next角色一起,构成了完整的庆祝系统
这个选择排序程序设计得非常巧妙,有以下几个亮点:
双箭头指示:有两个箭头,一个扫描所有数,一个标记找到的最小数,让选择排序的过程非常直观!小朋友们一眼就能看出程序在做什么。
可视化直观:用小柱子的高度表示数值的大小,排序过程一目了然,非常直观!通过交换位置,我们可以清楚地看到最小的数被"选"到了正确的位置。
动画流畅:小柱子交换位置时有平滑的动画,箭头有移动和标记的动画,粒子有飞散的动画,整个程序看起来非常流畅!这些动画不仅好看,还能帮助理解排序过程。
交互友好:可以按空格键或右方向键控制排序的节奏,适合学习,学习者可以按自己的节奏理解每一步。Next角色还会有动画提示,告诉你什么时候可以按键。
讲解详细:有文字讲解,帮助理解排序的每一步!Caption角色显示文字,配合两个箭头的指示,让选择排序的原理清晰易懂。
音乐有趣:排序过程中有音乐伴奏,排序完成后有庆祝音乐,还有标题动画时的小角色音乐,让学习更有趣!不同的事件有不同的音效,有很强的反馈感。
庆祝特效:排序完成后有小柱子跳动、粒子飞散等庆祝特效,很有成就感!这些特效让排序完成的时刻更有仪式感。
角色分工明确:每个角色都有自己的职责:Algorithm负责算法,Bars负责可视化,Arrow负责双箭头指示,Caption负责讲解,Next负责交互,配合得非常好!通过广播消息,角色之间协作无间。
选择排序特色:和冒泡排序不同,选择排序先找最小值再交换,交换次数少,这个程序通过双箭头完美展示了选择排序的特点!
小朋友们,你们可以在这个程序的基础上,加入更多有趣的功能:
自定义数据:可以让用户自己输入要排序的数字,而不是用固定的数字。这样小朋友们就可以排序自己喜欢的数字了!
对比冒泡排序:可以在同一个程序里同时展示选择排序和冒泡排序,比较它们的不同!这样小朋友们就可以直观地看到两种排序算法的区别了!
更多排序算法:可以加入其他排序算法,比如插入排序、快速排序,让程序更丰富。这样小朋友们就可以学习更多的排序算法了!
速度调节:可以让用户调节排序的速度,快一点或慢一点都可以。这样不同的小朋友可以根据自己的需要调整速度!
更多特效:可以加入更多特效,比如找到最小值时有特殊标记,交换位置时有爆炸效果,排序完成时有烟花效果。让程序更炫酷!
数据保存:可以保存排序的结果,下次打开时还能看到。这样小朋友们就可以记录自己的排序成果了!
比较功能:可以同时显示选择排序和冒泡排序,比较它们的交换次数和效率。这样小朋友们就可以直观地看到哪种算法更高效了!
通过今天的学习,我们一起探索了选择排序程序的开发,不仅学会了如何编写代码,还学到了另一个有趣的排序算法!
我们了解了:
选择排序算法:如何用嵌套循环实现选择排序,先找到最小的数,然后把它"选"到正确的位置。
外层循环控制当前要填充的位置
内层循环从当前位置开始,往后找最小值
用变量记录最小值和它的位置
找到后交换位置,每一轮只交换一次
选择排序 vs 冒泡排序:
冒泡排序:两两比较,交换次数多
选择排序:先找最小值,交换次数少
这个程序用双箭头完美展示了选择排序的特点!
可视化:如何用小柱子的高度表示数值,如何让小柱子平滑移动。
每个小柱子对应一个数字
数字越大,柱子越高
平滑移动让动画更流畅
双箭头指示:如何用两个箭头,一个扫描找最小值,一个标记最小值,让选择排序的过程更直观。
克隆技术创建第二个箭头
一个箭头扫描所有数
一个箭头标记找到的最小值
角色协作:如何让多个角色配合工作,一个负责算法,一个负责显示,一个负责讲解,一个负责交互。
通过广播消息实现角色间的通信
每个角色有明确的分工
角色之间紧密配合
动画效果:如何用幽灵特效、平滑移动、粒子特效让程序更生动。
幽灵特效让角色慢慢显示和消失
平滑移动让动画更流畅
粒子特效让庆祝更热闹
三角函数创造波浪效果
交互设计:如何检测键盘输入,如何让用户按自己的节奏学习。
检测空格键和右方向键
等待用户输入再继续
动画提示让交互更友好
希望小朋友们能够喜欢这个程序,也希望你们能够在这个基础上,发挥自己的想象力,创造出更多有趣的程序!记住,编程最重要的是创意和耐心,只要你们肯尝试,就一定能做出很棒的作品!
而且,通过这个程序,你们还学到了选择排序算法呢!还知道了选择排序和冒泡排序的区别!是不是觉得算法很有趣?其实算法就在我们身边,只要你们仔细观察,就能发现很多有趣的算法!
现在,就让我们一起去玩选择排序程序吧!看看谁能最快理解选择排序的原理!加油!
。即使下载了,也要上传,不是特别方便,尤其是不好查找。

关注即可领取,下载不限速,方便快捷。
