内容正文:
null
第17课
选择排序轻松做
第五单元
把数据排列有序
目录/content
描述选择排序的算法
分析选择排序的过程
验证选择排序的算法
课堂总结与拓展提升
数字王国探险记
在一个神秘的“数字王国”里,住着五位数字兄弟:108、24、12、91、35。他们住在五个编号为 1、2、3、4、5 的魔法盒子里。每个盒子里只能住一个数字兄弟。
这天,数字王国要举办一场“从大到小的阅兵仪式”,国王命令五位兄弟必须按数字大小排好队,最大的住进1号盒子,第二大的住进2号盒子,依此类推。
可是,数字兄弟们太调皮了,住得乱七八糟。于是,国王想出了一个办法,来帮助他们排队!
情景导入
在一个神秘的“数字王国”里,住着五位数字兄弟:108、24、12、91、35。他们住在五个编号为 1、2、3、4、5 的魔法盒子里。每个盒子里只能住一个数字兄弟。
这天,数字王国要举办一场“从大到小的阅兵仪式”,国王命令五位兄弟必须按数字大小排好队,最大的住进1号盒子,第二大的住进2号盒子,依此类推。
可是,数字兄弟们太调皮了,住得乱七八糟。于是,国王想出了一个办法,来帮助他们排队!
过渡:国王到底会想出什么办法呢?我们一起来看看吧!
描述选择排序的算法
Part One
描述选择排序的算法
数字王国的国王
可以借助上节课找最值的思想,将五位数字兄弟按照从大到小的顺序坐到1-5号的魔法盒子里。
1
2
3
4
5
第一步
找到五个魔法盒子中的数字老大以及所在的盒子编号
第二步
让数字老大住到编号为1的魔法盒子,而原本住在编号1的数字兄弟住到老大所在的盒子
第三步
以此类推,用“找出最大数”的方法,继续查找其他最大数的数字兄弟,找到后与对应盒子里的兄弟进行交换
108
24
数字国王想到的办法是,可以借助上节课找最值的思想,将五位数字兄弟按照从大到小的顺序坐到1-5号的魔法盒子里。
比如这里有五个魔法盒子,编号分别是1-5、数字兄弟分别坐在不同的盒子里。
第一步,找到五个魔法盒子中的老大以及所在的盒子编号;
比如经过遍历查找,我们找到了第一轮的数字老大是108,它住在了编号为3的魔法盒子;
第二步,让数字老大住到编号为1的魔法盒子,而原本住在编号1的数字兄弟住到老大所在的盒子
也就是说,让老大108住在编号1的魔法盒子;而原本住在编号1 的数字兄弟24,则住到老大的魔法盒子3号;
第三步,以此类推,用“找出最大数”的方法,继续查找其他最大数的数字兄弟,找到后与对应盒子里的兄弟进行交换
过渡:在明白了排序的基本规则后,下面我们一起帮助国王把住的混乱的数字兄弟们按照从大到小的顺序排列好吧!
任务目标
以小组为单位,尝试利用刚才分析的思路,帮助数字国王把数字兄弟按照从大到小的顺序排列,并完成活动探究单
描述选择排序的算法
文件位置
1、学生文件 -- 1、数字兄弟排序【程序体验】 -- index.html
请同学们以小组为单位,尝试利用刚才分析的思路,帮助数字国王把数字兄弟按照从大到小的顺序排列,并完成活动探究单
接下来请打开1、学生文件 -- 1、数字兄弟排序【程序体验】 -- index.html 程序开始体验吧!(小组活动)
第一轮比较
找到的数字老大是:_____;所在的盒子编号是:_______
把___号盒子的数字和____号盒子的数字交换,交换后确定位置的数字是:
描述选择排序的算法
第二轮比较
找到的数字老大是:_____;所在的盒子编号是:_______
把___号盒子的数字和____号盒子的数字交换,交换后确定位置的数字是:
第三轮比较
找到的数字老大是:_____;所在的盒子编号是:_______
把___号盒子的数字和____号盒子的数字交换,交换后确定位置的数字是:
第四轮比较
找到的数字老大是:_____;所在的盒子编号是:_______
把___号盒子的数字和____号盒子的数字交换,交换后确定位置的数字是:
108
2
1
2
108
91
4
2
4
108、91
35
4
3
4
108、91、35
24
5
4
5
108、91、35、24、12
时间到,哪个小组愿意上台分享自己本组的探究成果?(邀请小组上台分享并简单点评)
我们顺着这小组的思路一起来总结整个排序的过程
第一轮比较:找到的数字老大是?(108);所在的盒子编号是?(2)因此我们要把哪两个盒子的数字交换?(1号盒子和2号盒子交换)交换后确定位置的数字是:108
接着我们开始第二轮比较:找到的数字老大是?(91);所在的盒子编号是?(4)因此我们要把哪两个盒子的数字交换?(2号盒子和4号盒子交换)交换后确定位置的数字是:108、91
然后进行第三轮比较:找到的数字老大是?(35);所在的盒子编号是?(4)因此我们要把哪两个盒子的数字交换?(3号盒子和4号盒子交换)交换后确定位置的数字是:108、91、35
最后进行第四轮比较:找到的数字老大是?(24);所在的盒子编号是?(4)因此我们要把哪两个盒子的数字交换?(4号盒子和5号盒子交换)交换后确定位置的数字是:108、91、35、24、12
到此我们是熟悉兄弟终于按照数字大小居住到了合适的住所。
过渡:这个过程中,我们使用的是选择排序的算法,到底什么是选择排序算法呢?我们一起深入了解一下!
描述选择排序的算法
选择排序算法
是一种简单直观的比较排序算法。
其核心思想是:每次从未排序的部分中选出最小
(或最大)的元素,将其放到已排序部分的末尾,
逐步构建有序序列
一般适用于数据量较小的场景
所谓的算则排序算法,其实是一种简单直观的比较排序算法。
其核心思想是:每次从未排序的部分中选出最小或最大)的元素,将其放到已排序部分的末尾,逐步构建有序序列;
因此它一般用在数据量较小的场景
过渡:在了解了什么是选择排序算法后,我们可以尝试用计算机帮助我们写一个专门用来排序的算法,但是在让计算法写算法前,我们要学会将我们刚才的操作过程变成计算机也能够理解的步骤!一起来看看如何分析选择排序算法的流程图吧!
分析选择排序的过程
Part Two
过程分析
第一步
五个数字兄弟都已经住在了不同的魔法盒子里
第二步
为了避免重复查找,需要有一个标记来记录已经排好序的数字兄弟
分析选择排序的算法
第三步
开始查找五个数字兄弟中的老大,根据已排序的个数进行下一步判断
第四步
在未排好顺序的数字兄弟中找到本轮的数字老大
第五步
和未排好序的第一个数字兄弟交换
第六步
将标记的排序个数加1,一直重复执行直到排序个数达到4个
输出结果
按照从大到小的顺序输出五位数字兄弟的排位
首先一开始的时候,五个数字兄弟都已经住在了不同的魔法盒子里
为了避免重复查找,需要有一个标记来记录已经排好序的数字兄弟
接着我们就可以开始查找五个数字兄弟中的老大,根据已排序的个数进行下一步判断
在未排好顺序的数字兄弟中找到本轮的数字老大
然后和未排好序的第一个数字兄弟交换
并且将标记的排序个数加1,一直重复执行直到排序个数达到4个
最后按照从大到小的顺序输出五位数字兄弟的位置
过渡:那么我们将这个过程整理成流程图,方便后续进行算法验证吧!
分析选择排序的算法
任务目标
根据上述的过程分析,首先将流程图补充完整,并完成补充完整的流程图填写完“具体分析过程.doc”文档
文件位置
1、学生文件 -- 2、补充流程图【画流程图】 -- 绘制流程图.doc
根据上述的过程分析,首先将流程图补充完整,并完成补充完整的流程图填写完“具体分析过程.doc”文档
请同学们打开1、学生文件 -- 2、补充流程图【画流程图】 -- 绘制流程图.doc 文件开始绘制吧!
分析选择排序的算法
搜索
交换位置
改变搜索范围
时间到,哪个同学来分享自己绘制的流程图?(邀请同学分析,并简单点评)
通过这个流程图我们可以知道,“在未排序中找到数字老大”是在进行搜索的过程;
而”与未排序的第一个数字兄弟交换位置”这个过程是属于交换位置操作还是改变搜索范围呢?(邀请同学分析 - 交换位置)
在完成一轮的搜索后,将已排序个数增加1,就能够改变搜索的范围
过渡:那么整个过程结合到具体的数字,你又是如何完成的呢?
数字王国的国王
如果每次举办排位大赛,都要这么复杂,太浪费时间了
分析选择排序的算法
(邀请同学回答然后老师简单演示)
所以最终在同学们的帮助下,五位数字兄弟终于按照自己的数字大小排好了顺序;
但是数字国王说,如果每次举办排位大赛,都要这么复杂,太浪费时间了,你有什么更好的方法吗?
过渡:我们可以写一个专门用来排序的算法,下面我们一起去看看这个算法是否能够帮助我们进行排序吧!
验证选择排序的算法
Part Three
验证选择排序的算法
任务目标
使用海龟编辑器打开“选择排序算法.py”程序,体验程序,并找出交换位置的代码
文件位置
1、学生文件 -- 3、选择排序算法【算法体验】 -- 选择排序算法.py
现在同学们使用海龟编辑器打开“选择排序算法.py”程序,体验程序,并找出交换位置的代码;
请同学们打开1、学生文件 -- 3、选择排序算法【算法体验】 -- 选择排序算法.py 开始体验吧!
验证选择排序的算法
结果分析
通过执行代码,最终输出的结果是:
排序后的数: [108, 91, 35, 24, 12]
代码分析
在这段代码中,如何实现交换?
if data[j] > data[max]
表示的含义是如果找到的值更大就更新最大数
通过执行代码,最终输出的结果是?(邀请同学分享并简单点评)
通过程序执行,最终得到排序后的数: [108, 91, 35, 24, 12];
那么这段代码中,是如何实现交换的?(邀请同学分享并简单点评)
if data[j] > data[max] 表示的含义是如果找到的值更大就更新最大数
过渡:并且我们我们这段代码中有两个while循环,两个循环的作用是否一致呢?
验证选择排序的算法
判断条件:i <n-1
外层循环次数小于列表的长度
作用:用于控制排序的轮数
判断条件:j < n
内层循环次数小于列表的长度
作用:用于找到未排序数中的最大数
我们来分析第一个while循环的判断条件,i < n-1 你是如何理解的呢?(邀请同学分享)
结合前面的注释,我们可以知道,它表达的意思是外层循环次数小于列表的长度,所以它的作用是用于控制排序的轮数;
那么第二个循环的判断条件是 j < n,你又是如何理解的呢?(邀请同学分享)
同样,结合前面的注释,我们可以知道,它表达的意思是内层循环次数小于列表的长度,也就是用于找到未排序数中的最大数
过渡:那么我们今天的学习之旅也即将接近尾声,一起来总结今天学习的内容吧!
课堂总结与拓展提升
Part Four
1.选择排序是计算机完成排序任务时常用的一种排序算法。
2.选择排序算法借助在特定范围内,寻找最大数或最小数并交换位置的方式进行排序。
3.通过探究选择排序与找出最大值或最小值之间的关系,可以了解算法的内在联系。
验证选择排序的算法
拓展提升
在Python中,可以使用sort( )函数来进行排序,编程验证与实现算法时更加简单便捷
1.选择排序是计算机完成排序任务时常用的一种排序算法。
2.选择排序算法借助在特定范围内,寻找最大数或最小数并交换位置的方式进行排序。
3.通过探究选择排序与找出最大值或最小值之间的关系,可以了解算法的内在联系。
其实在Python中,可以使用sort( )函数来进行排序,编程验证与实现算法时更加简单便捷,同学们可以打开拓展提升文件夹的程序,来一起sorted函数的魅力吧!
第17课
下节课再见!
第五单元
把数据排列有序
$null
选择排序流程图分析
1、过程描述:
第一步:五个数字兄弟都已经住在了不同的魔法盒子里
第二步:为了避免重复查找,需要有一个标记来记录已经排好序的数字兄弟;
第三步:开始查找五个数字兄弟中的老大,根据已排序的个数进行下一步判断;
第四步:在未排好顺序的数字兄弟中找到本轮的数字老大;
第五步:和未排好序的第一个数字兄弟交换。
第六步:将标记的排序个数加1,一直重复执行直到排序个数达到4 (
否
) (
是
)个
(
开 始
)结果输出:按照从大到小的顺序输出五位数字兄弟的位置
2、补充流程图
(
与未排序的第一个数字兄弟交换位置
) (
在未排序中找到数字老大
) (
设置已排序的个数为0
) (
结束
) (
已排序个数增加1
) (
已排序个数<4?
) (
按顺序输出数字兄弟排
位
) (
五个数字兄弟已经住到不同的盒子里
)
学科网(北京)股份有限公司
$null