内容正文:
第5单元 把数据排列有序
选择排序轻松做
第17课
人教版·五年级
学习目标
01
课堂导入
02
新知探究
03
知识总结
04
智慧挑战
05
兴趣园地
06
目录
CONTENTS
2
PART 1
学习目标
能够梳理出选择排序的基本步骤,通过补全
流程图,了解用流程图描述的选择排序算法。
学习目标
了解排序数据量与算法执行次数的关系,能
够用程序验证选择排序算法。
PART 2
课堂导入
课堂导入
把一组无序的数进行排序是生活中很常见的事情。例如,把一堆水果按大小排序,一队小朋友站在一起按身高排序,一个旅游团按年龄排序,一组动物按奔跑速度排序。
你还知道哪些场景需要排序呢?
数据量比较小时,通过观察就能够排序,但当数据量较大时,可以通过设计算法,编写程序让计算机完成排序。
选择排序
PART 3
新知探求
新知探究
学习活动1
活动1:描述选择排序的算法
新知探究
学习活动1 描述选择排序的算法
5个数进行排序
桌上有5个盒子,分别以 1、2、3、4、5 编号,每个盒子里装有一张卡片,卡片上写着一个大于0的数。请依据这些卡片上的数,把它们从大到小排序。
新知探究
排序要求:
把写着最大数的卡片放在1号盒子,写着第二大数的卡片放在2号盒子,以此类推。
讨论
1.如何把写着最大数的卡片放到对应盒子里?
2.其余4个数如何完成排序?
学习活动1 描述选择排序的算法
新知探究
基本步骤
第 1 步:用前一课所学方法,找出最大数的卡片所在盒子。
第 2 步:把写着最大数的卡片与 1 号盒子里的卡片进行交换。
第 3 步:以此类推,在 2 号到 5 号盒子里,用“找出最大数”的方法,继续查找其中最大数的卡片,找到后与对应盒子里的卡片进行交换。
第 1 步:把卡片放入盒子,已排序个数设为 0。
第 2 步:在未排序数中找到最大数,与未排序的第一个数交换位置。
第 3 步:重复第 2 步,依次查看所有数并交换到相应的位置。
第 4 步:按顺序呈现 5 个数。
学习活动1 描述选择排序的算法
循环结构
新知探究
补充流程图
算法描述:
4
学习活动1 描述选择排序的算法
第 1 步:把卡片放入盒子,已排序个数设为 0。
第 2 步:在未排序数中找到最大数,与未排序的第一个数交换位置。
第 3 步:重复第 2 步,依次查看所有数并交换到相应的位置。
第 4 步:按顺序呈现 5 个数。
最大值
第一个
1
0
新知探究
学习活动2
活动2:分析选择排序的过程
新知探究
5张卡片上有5个数,如108、24、12、91、35。 运用前面所学选择排序算法,完成从大到小的排序,验证算法执行的步骤,记录卡片交换的次数。
学习活动2 分析选择排序的过程
选择排序算法借助在特定范围内寻找最大(小)值,并交换位置的方式进行排序。
用 找出未排序数据中的最大值,与未排序数中最前面的卡片进行交换,记录每一轮排序结果。
108
108
91
108
91
35
108
91
35
24
24 12 91 35
12 24 35
24 12
12
91 35 24 12
新知探究
进一步思考
学习选择排序算法后,有一位同学说:“我观察一下就能把这5个数排好顺序,不必反复操作,计算机有点笨呀!“
提示:只有5个数时,人通过看一看、比一比,就能完成排序。
但如果是 50 个数、500 个数、5 000 个数……,就不能很快完成了。
然而,通过算法编写程序让计算机执行,不管是 5 个数,还是 50 个、500 个、5 000 个……计算机都能够瞬间完成。
学习活动2 分析选择排序的过程
小组同学交流
讨论
新知探究
活动3:验证选择排序的算法
学习活动3
新知探究
学习活动3 验证选择排序的算法
通过找到列表中的最大数并交换位置,反复操作就可以实现数据排序。
打开程序并运行,利用程序实现选择排序算法,把数据由大到小排序。
依据程序的注释(#内容),尝试了解算法与程序的对应关系。
PART 4
知识总结
知识总结
描述选择排序的算法
用自然语言描述
用流程图描述
验证选择排序的算法
Python 中的数据列表
while 循环
程序实现与验证
排序算法解决的关键问题
搜索、交换位置、改变搜索范围
PART 5
智慧挑战
2.关于选择排序,下列说法正确的是:
A. 排序时,数据量越大,需要的比较次数增长越快(翻倍增长)
B. 排序时,每轮都需要交换一次,所以交换次数等于数字个数
C. 选择排序是通过每次找出最小(或最大)的元素来逐步完成排序的
D. 选择排序的流程图不需要循环结构
1.选择排序算法的部分流程图,其中空白处应该填入什么内容?(图示为:开始 → 设置第一个数为最小值 → 依次取下一个数 → ? → 更新最小值 → 直到最后一个数 → 交换最小值到前面 → 进入下一轮)
A. 当前数是否等于最小值?
B. 当前数是否大于最小值?
C. 当前数是否小于最小值?
D. 当前数是否不等于最小值?
智慧挑战
智慧挑战
解析:最在依次取下一个数的过程中,我们需要判断这个数是否比当前记录的最小值更小。如果是,就更新最小值,所以空白处应填入“当前数是否小于最小值?”。
答案:C
解析:选择排序的核心就是每次找出最小(或最大)的元素放到正确位置。
答案:C
PART 6
兴趣园地
兴趣园地
sorted( ) 函数排序
输出结果:
排序后24,25,35,42,56,83,77,91,99,108
在 Python 中,一般把 sorted( ) 称为排序函数,它把排序的算法封装在函数之中,可以直接使用,直接进行编程验证与实现算法
例如:
# 创建一个包含 10 个数的列表
box = [24, 99, 56, 25, 91, 77, 42, 83, 108, 35]
print(' 排序前 : ', box)
# 使用 sorted( ) 函数进行排序
box=sorted(box)
print(' 排序后 :' , box)
默认sorted( ) 函数按照升序排序
#对列表中的数值排序
谢谢
下节课见!
Thanks!
人教版·五年级
$