课题名称
选择排序算法(第一课时)
授课者
苏晨怡
年级
高二
对象
新疆班学生
教材
《算法与程序设计》
课时
1课时
授课时间
一、前端分析
学习内容分析
教材选自《算法与程序设计》的2.3.3选择排序。1.《学科教学指导意见》对本课教学
(?http:?/??/?www.5ykj.com?/?Health?/?"
\t
"_blank?)内容的要求对于选择排序,除了掌握选择排序算法本身外,更重要的是理解选择排序算法的原理,了解选择排序算法的特点。2.本课内容的组成成分和在模块学习中的地位和作用选择排序是《算法与程序设计》模块中,难度最高的算法之一。学生只有在充分理解和掌握选择排序算法的前提之下,才能更好使用VB程序语言来实现该算法。学生对于选择排序算法思想的理解是前提和基础,也是算法实现过程中难点的突破口。所以,本课重点在于选择排序算法思想的理解与掌握,该算法的程序实现留到下一节课再做学习。
学习者特征分析
1.学生已有的认知水平和能力基础通过上学期《信息技术基础》算法部分的学习,学生初步了解算法及其表示、比较熟悉流程图设计。学生学习本课可能遇到的困难和问题
学生对象为内高新疆班学生,大多数学生在初中学习时因地域或教育原因,信息素养不高,在学习《算法与程序设计》模块时普遍表示出比较吃力。?
学习中学生可能难以理解什么条件两个数据要交换;难以理解如何找到最小数;会被流程图中多个控制变量所代表作用搞混;直接拿出整个排序的复杂算法分析,可能会吓跑学生,学生会逃避学习,注意力难以长时间集中。
学生在学习过程中可能采取的各种学习策略
为了帮助学生更好的解决在课堂中可能遇到的问题、解决难点,利用学案设计多个教学活动。让学生在活动中思考、交流、探究,从而得到问题的答案。在活动中,学生加深了对于选择排序算法的理解,在参与活动的过程中,解决了这些将会遇到的难题。与同学一起解决问题。
学习需要分析
排序算法是程序设计中的重要算法,对它的学习既是对已经学过的三种程序设计结构的综合运用,又能为后续对分查找的学习作好铺垫。
二、教学目标
知识与技能
1.掌握选择排序具体算法具体过程;2.能对照冒泡排序,解释选择排序的优势。
过程与方法
1.具有模仿水平,在教师指导下可以表达出选择排序的思想,能对流程图作出解释;2.能独立完成流程图的绘制,对选择排序的各个环节比较熟练。
情感、态度与价值观:
1.学生在学习过程中,通过亲身经历体验选择排序的实现过程,获得对此算法的感性认识;2.开展交流合作,把自己对此算法的心得与他人交流,培养良好的信息素养,提升热爱科学的理念。
三、教学重难点
重点
对选择排序原理的理解;绘制流程图。
难点
如何找到一组数中的最小数(或最大数);以及下标变量k的理解;数据交换发生的条件。
四、教学环境
硬件环境
多媒体教室
软件环境
一份教学ppt、每个学生一份学案
五、教学策略
讲授法为主,适当让学生讨论与体验。把握重点,先导入问题,复习冒泡排序,分析冒泡中数据交换次数多的问题,指出冒泡排序法效率不高,从而引出数据交换次数较少的选择排序算法。在教学过程中,可通过Flash演示材料,比较直观地把抽象的问题简单化,由“流程图雏形绘制”-“逐步完善流程图”的过程,让学生理解选择排序的思想原理。在教学中可灵活运用小组合作、分组讨论等手段进行教学,通过发散性思维的培养,增强学生对知识的探索能力。
六、教学过程
教学行为
学生活动
设计意图
课前准备
分发给学生一份学案
课前预习
为教学的顺利开展做好准备。
复习导入
提问:若要将108、120、96、75这组数据按从小到大的顺序进行冒泡排序,则:①需进行几次冒泡排序,每次的排序结果分别是什么?②整个排序过程中进行了几次数据交换,是否能减少交换次数?③能否减少交换次数?
1.回答问题;2.讨论思考第三个小问题,能否减少交换次数。
复习冒泡排序算法,并通过分析数据交换的次数,提问学生是否有办法让数据交换的次数变少,引发学生思考与发现,进而引出选择排序算法。
二、例题示范引出概念
讲解:将108、120、96、75四个数从小到大进行排序,简要阐述选择排序算法。第一次,从四个数中找到最小数75,放到最上面第一个位置,75与108交换位置;第二次,从三个数中找到最小数96,放到最上面第二个位置,96与120交换位置;依次类推,直到成为有序序列,结果如下:引出概念:
选择排序是在参与排序的所有数组元素中找出最小(或最大)数据的元素,使它与第一个元素中的数据相互交换,然后再在余下的元素中找出最小(或最大)数据的元素,与第二个元素中的数据相互交换位置,以此类推,直到所有元素成为一个有序的序列。
听教师讲解,解决疑惑。
通过对第三个小问题深层次的探讨,引出本节课学习的算法:选择排序算法及其概念。
三、小试牛刀
随堂练习1:
1.先在学案上回答两个练习题。2.请学生讲解这两道目自己的选择与做题思路。
让学生先了解选择排序算法,通过两道简单题目的练手,对其有总体认识,树立信心。
四、选择排序算法表示(流程图1)
1.回顾:表示算法的三种方法:自然语言——>流程图——>程序语言2.有的同学说,画流程图还不简单,一个开始,一个结束,中间加个“选择排序”不就行了。回答没错,得到流程图一。
回顾算法的三种表示方法。
借学生口闻,无缝引导学生到画选择排序的流程图中。
五、选择排序算法表示(流程图2)
流程图一问题:这个流程图没错,但实际问题没有解决,到底选择排序是怎么样进行的呢?观察:根据下图图例,请学生用自己的语言描述选择排序过程
3.根据学生的回答,得出流程。
学生参与思考,回答问题。
1.请学生起来,对照上面实例,引导问答进行排序要有两步:第一步,找最小数;第二步,交换位置。2.通过抛出简单的问题,对选择排序算法进行分解,一步步加深理解难度。
六、选择排序算法表示(流程图3)
流程图二问题:“找最小数”和“交换位置”要重复几次?说明:请学生回答这儿总共四个数,重复几次?3次。如果总共5个数,重复几次?
如果总共n个数,重复几次?得出流程图三。找最小数,交换,循环三次,再结束,画的规范些,就成改进的流程图三。
回顾程序的三种基本结构;在学案上先补充改进后的流程图三,再回答问题。
重复做事情,会想到用哪一个程序结构来表达?引导学生想起“循环结构”,在流程图二的基础上加上循环部分,完善流程图。
七、选择排序算法表示(流程图4:找最小数)
流程图三问题:怎么样在一组数中找到最小数据呢?(以108、120、96、75为例)讲解:以第一遍选择排序为例,对算法就行演示。首先访问到的是108,只有一个数,最大是它,最小也是它,所以最小数就是108;接着访问到120,最小数108和120比较大小,108小,还是最小数还是108;其次访问96,最小数108和96比较大小,96小,所以我们把最小数96移到数组第一个位置,交换108和96;最后访问75,最小数96和75比较大小,75小,因此我们把最小数75移到数组第一个位置,交换96和75。因此第一遍排序结果是:75
120
108
963.提问:这样的排序结果对吗?4.讲解:直接拿确切的数对调是不恰当的,为了解决这个冲突,引入最小数下标k这个变量。一起看这个表格:引导学生得出流程图四,并请学生补充完整6.提问:将排序数据规模拓展为N,流程图四怎么修改?
学生思考108、120、96、75四个数当中哪个数最小,并回答。思考:以第一种方法找最小数,得出的第一遍选择排序结果是否正确,有无违背选择排序算法思想,并回答。在学案上补充完整流程图四,并回答。思考将排序数据规模拓展为N,流程图四如何修改,并回答。
“找最小数”是本节课的难点,首先尝试直接把确切的数值对调来找最小数,发现其违背选择排序算法思想,从而引进最小数下标变量k,这样更符合学生的思考,方便学生理解与熟记最小数下标k。2.让学生自己归纳出解决的办法,既能落实知识点,又能激发学生的求知与探索欲望。
八、选择排序算法表示(流程图5:交换位置)
1.流程图四问题:数据交换是不是每趟都要进行?[给两个实例,填表格,引发学生思考]2.总结:根据两个实例对比,得出结论:如果i≠k,交换位置,否则的话,不交换位置。引导学生得出流程图五,并请学生补充完整。
讨论,观察实例,填写表格。根据讨论情况,试着归纳总结。在学案上补充完整流程图五,并回答。
抛出问题“数据交换是否每趟都要进行?”,给出例子,让学生自主探究。从而解决问题,达到加深认识的目的。
九、练习巩固
随堂练习2
1.先在学案上回答两个练习题。2.请学生讲解这两道目自己的选择与做题思路。
检验学生对选择排序算法的掌握程度。
十、冒泡排序与选择排序算法效率对比
1.回顾:已知冒泡排序的比较次数和交换次数,接下来我们尝试总结选择排序的算法效率[以108/120/96/75为例]。2.归纳:对规模为n的数据进行选择排序,总的比较次数:n(n-1)/2,总的交换次数[0,n-1]。
思考,并回答问题。
对比两种排序算法的比较次数和交换次数,更好的理解两种排序算法的不同之处。
十一、总结
回顾:请学生来总结
1.学生尝试回顾、总结。
1.多将“说”的机会交给学生,锻炼表达能力。2.学生自己总结比老师总结的效果好,学生印象更深刻。
七、板书设计
↓冒泡选择比较次数n(n-1)/2n(n-1)/2交换次数[0,
n(n-1)/2][0,
n-1]
八、教学反思
浙教版选修模块《算法与程序设计》,内容抽象枯燥,特别是对于经典排序算法和查找算法的学习,更是晦涩难懂。在有限的课时里,让学生理解经典算法的原理,并能应用该算法解决实际问题,这对于教师来讲,也是个不小的挑战。该节课的教学设计,比较满意的地方有三点:第一,选择排序算法在《算法与程序设计》这本书里是较复杂的算法,不易学生掌握与应用。在教学实施过程中,将该算法分成四个小知识点:①每趟排序的行为、②重复几次、③如何找最小数、④如何交换。相对完整算法而言,这四个小知识点并不难理解,然后引导学生逐个击破,最终解决整个选择排序算法。如果在课堂伊始,就抛出完整的算法,可能会有大部分学生跟不上教师的讲课思路,再加上学生的畏难心理,从而导致本节课的教学内容难以落实。但换种方式,由浅入深,抓住“画选择排序算法流程图”这条主线,从简单问题入手,以学生现有知识为基础,逐步加深,一环扣一环,,直到掌握最终的知识为止。
第二,重视学生的主体作用。本节课采用学案辅助教学,目的是为了引导学生化“被动”为“主动”学习,如果教师还是以教为主,忽视学生的学,就会令学生产生厌倦情绪,而通过在课堂上提问、学生演算并作答的教学方式,充分调动学生的学习积极性,让学生学得生动,学得活泼,从而提高了课堂教学效果。
第三,上课节奏紧松合理。上算法课,免不了大量的逻辑推理,因果判断。如果整节课学生都需要紧张推算,容易造成学生思维疲劳,跟不上教师教学节奏。因此教学设计上尽量松紧结合,讲了复杂的知识点,来点轻松的知识点,效果更好。同时,通过这堂课的教学,也发现了以下几个有待改进的问题。
第一,在本堂课的教学过程中,流程图的画法不够美观、课堂语言中的一些专业术语不够规范,需要用更加严谨的态度去对待教学。
第二,语言不够精简,板书不够美观,教学基本功需要平时再多加练习。
第一趟
第二趟
第三趟
2.3.3
选择排序(1)
找最小数
1.概念:
交换位置
2.流程图
3.效率
1
第
1
页
共
9页(共20张PPT)
2.3.3
选择排序算法第一课时
一、冒泡导入
思考1:
将108、120、96、75这组数据按从小到大进行冒泡排序
1.需要进行几趟冒泡排序,每趟的排序结果分别是什么?
2.整个排序过程中进行了几次数据比较?几次数据交换?
3.能否减少交换次数?
二、选择排序概念
选择排序是在参与排序的所有数组元素中找出最小(或最大)数据的元素,使它与第一个元素中的数据相互交换,然后再在余下的元素中找出最小(或最大)数据的元素,与第二个元素中的数据相互交换位置,以此类推,直到所有元素成为一个有序的序列。
随堂练习1
1、某数组10个元素,依次为2、20、12、15、13、50、55、60、80、30,若采用选择排序算法进行降序排序,则第5遍排序完成时的数据序列为
(
)
B.
80、60、55、50、30、20、15、13、12、2
A.
80、60、55、50、30、13、15、20、2、12
C.
80、60、55、50、30、15、20、12、2、13
D.
80、60、55、50、30、15、12、20、2、13
D
2、用选择排序算法对一组学生的身高数据进行升序排序,已知第一遍排序结束后的数据序列为165、168、178、175、171,则下列选项中可能是原始数据序列的是:
(
)
175、178、168、165、171
B.165、178、168、175、171
C.
178、168、165、175、171
D.165、168、171、175、178
C
三、选择排序流程图
回顾表示算法的三种方法:
自然语言——>流程图——>程序语言
四、选择排序流程图
开始
选择排序
结束
流程图一:
问题一:选择排序是怎么一步步进行?
讨论一:选择排序,每一趟排序可以分为几步?
第一步,找最小数;
第二步,交换位置。
第一趟
第二趟
第三趟
三、选择排序流程图
开始
找最小数
结束
交换
流程图二:
问题二:“找最小数”和“交换位置”要重复几次?
开始
选择排序
结束
流程图一:
讨论二:如果总共5个数,重复几次?
如果总共N个数,重复几次?
循环
第一趟
第二趟
第三趟
三、选择排序流程图
开始
找最小数
交换
3次
结束
流程图三:
开始
找最小数
结束
交换
流程图二:
三、选择排序流程图
改进后的流程图三:
开始
找最小数
结束
交换
i<4?
i?1
i?i+1
Y
N
问题三:怎么样在一组数中找到最小数据呢?
i来记录循环次数,即选择排序所需趟数
i=1,进入第一次循环,
找到最小数75,
交换到第一个位置,i自己加一个。
i=2,进入第二次循环,
找到最小数96,
交换到第一个位置,i自己加一个。
i=3,进入第三次循环,
找到最小数108,
交换到第一个位置,i自己加一个。
i=4,跳出循环。
三、选择排序流程图
第几个数
比较大小
关系
最小数
d(1)=108
d(1)
k<—1
d(k)=108,
k=1
d(2)=120
d(k)d(k)=108,
k=1
d(3)=96
d(k)>d(3)
k<—3
d(k)=96,
k=3
d(4)=75
d(k)>d(4)
k<—4
d(k)=75,
k=4
表格介绍,k表示最小数位置,d(k)表示最小数
108
120
96
75
1
2
3
4
三、选择排序流程图
问题四:数据交换是不是每趟都要进行?
流程图四(找最小数)
流程图三:
开始
找最小数
结束
交换
i<4
?
i?1
i?i+1
Y
N
开始
结束
i<
4?
i
?
1
输出
Y
N
N
交换
i?i+1
n
k
?
j
?
j+1
j<=
?
k
?
,
j
?
d(j)?
Y
Y
N
1
2
4
j
i
i+1
n
N
n
三、选择排序流程图
实例一:
表格介绍,i表示第几趟选择排序,k表示最小数的位置。
第几次i
最小数应放第几个位置
最小数实际位置k
i,
k关系
是否交换
第1趟
最小数应放第1个位置
第2趟
最小数应放第2个位置
第3趟
最小数应放第3个位置
第4个
第3个
1≠4
3≠4
第4个
2≠3
交换
交换
交换
第一趟
第二趟
第三趟
三、选择排序流程图
实例二:
75
108
96
120
1
2
3
4
75
108
96
120
1
2
3
4
第一次
75
108
96
120
1
2
3
4
75
96
108
120
1
2
3
4
第二次
75
96
108
120
1
2
3
4
75
96
108
120
1
2
3
4
第三次
数据是否交换用什么结构表达?
选择
表格介绍,i表示第几趟选择排序,k表示最小数的位置。
第几次i
最小数应放第几个位置
最小数实际位置k
i,
k关系
是否交换
第1趟
最小数应放第1个位置
第2趟
最小数应放第2个位置
第3趟
最小数应放第3个位置
第1个
第3个
1=1
3=3
第3个
2≠3
不用交换
交换
不用交换
第一趟
第二趟
第三趟
三、选择排序流程图
开始
k
?
j
j
?
j+1
j<=n?
k
?
i
,j
?
i+1
d(j)?
结束
i
?
i+1
ii
?
1
输出
Y
N
Y
N
Y
N
流程图五(数据交换)
t=d(i):d(i)=d(k):d(k)=t
i
≠
k?
Y
N
i表示第几趟排序,
k表示最小数位置,
d(k)表示最小数,
j表示下一个数位置
找最小数
交换位置
随堂练习2
2、有5位运动员100米成绩依次为13.8,12.5,13.0,13.2,13.4,用选择排序法对数据五个数据从大到小排序,共需经过(
)次数据对调。
A.10
B.4
C.3
D.2
D
1、某食品连锁店5位顾客贵宾消费卡的积分依次为900、512、613、700、810,若采用选择排序算法对其进行从小到大排序,如下表,第二趟的排序结果是(
)?????????????????
A.512??
?613??
?700?
??900??
?810??
?
B.512?
??613??
?900??
?700??
?810
C.512??
900?
700??
?810
613
D.512?
??810?
??613?
??900?
??700?
原始数据
?900
512
613
700
810
第一趟
512
900
613
?700
?810
第二趟
第三趟
512
?613
700
900
?810
第四趟
512
?613
700
810
900
B
四、选择排序与冒泡排序算法效率对比
冒泡排序
选择排序
比较次数
交换次数
n(n-1)/2
n(n-1)/2
[
0,
n(n-1)/2]
[
0,
n-1]
五、总结
选择排序的概念
选择排序的流程图
冒泡选择与选择排序算法效率对比
谢谢!