开篇:润墨网以专业的文秘视角,为您筛选了一篇“冒泡排序算法”教案范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
一、教材分析
浙教版的《算法与程序设计》,在第五章第二节中对冒泡排序算法进行了实现。处理教材的时候笔者将第三章提前,为第二章、第五章打下基础。一是加深学生对算法与程序设计关系的体会;二是可以通过程序的实现加深对算法的理解。
二、学情分析
学生已经学习过VB程序基础和VB控制结构,对简单的分支、循环等流程有了较清楚的认识,也实现过一些程序,但是对于二重循环以及循环与分支的嵌套还比较陌生。在排序算法中,对于内外层循环的作用以及循环参数的设置可能会产生一些不合理或是错误,这需要通过实践的体验进行强化理解。
三、教学目标
知识与技能目标:熟练掌握冒泡排序工作原理,能利用冒泡排序思想对任意给定的一个数列进行排序,培养学生的动手能力。
过程与方法目标:利用合作学习、小组探究等方式熟练理解并掌握冒泡排序算法。
情感态度与价值观目标:培养学生分析问题、发现规律的能力,激发学生的热情,提升学生的信息素养。
四、教学重点
冒泡排序工作方式,工作原理的解析,归纳算法
五、教学难点
冒泡排序工作原理的分析,算法设计
六、教学过程
1.新课引入
第一组前五位同学分别给一张卡片,卡片上写的是数字8、56、40、17、23。
游戏规则:从第一组第五位同学开始往前,依次与前一位学生拿到的卡片比较,如果后一位学生卡片上的数字比前一位学生的小,两个人互换位置,直到比较到最前面一位同学为止。
其他同学观察。
师:你们看到了什么?
生:(讨论并说自己的想法。)
师:我刚才听到同学们的发言了,最小的数在最前面了,比较了4次,交换了2次。
师:如果让所有拿卡片的同学按照从小到大的顺序就座,我们如何处理呢?其实刚才第一组的五位同学就给我们展示了一种排序的方法,我们称冒泡排序。究竟什么是排序呢?把杂乱无章的数据变为有序数据的过程我们称为排序。排序在我们日常生活中应用比较广泛,比如说,每一次大型考试之后的排名,第一次体育课上的排队等等。冒泡排序,顾名思义,形容较小的数据像水中的气泡一样,气泡的质量比水轻,往上飘。我们来一起看看刚才第一组同学在交换座位中的思路吧,我们把刚才同学的卡片按照顺序存储在数组中,数组大家还熟悉吧,在我发的导学案中对数组的相关知识再次介绍,不熟悉的同学可以看看。我们找一位同学上来写一下我们第一次比较、交换的情况。
生:上台演示刚才的处理过程。
师:课件展示排序的过程(实例分析),课件展示每一次排序结果。
观察每一次比较次数。
2.发现规律
用i表示处理遍数,用j表示数组元素下标变化
第1遍处理:i=1
d(j)<d(j-1):d(5)<d(4)――23<17=false,不换23 17 40 56 8
d(j)<d(j-1):d(4)<d(3)――17<40=true,换23 17 40 56 8
d(j)<d(j-1):d(3)<d(2)――17<56=true,换23 40 17 56 8
d(j)<d(j-1):d(2)<d(1)――17<8=false,不换23 40 56 17 8
j:5~2,比较了4次
第2遍处理:i=2
d(j)<d(j-1):d(5)<d(4)――23<40=true,换23 40 56 17 8
d(j)<d(j-1):d(4)<d(3)――23<56=true,换40 23 56 17 8
d(j)<d(j-1):d(3)<d(2)――23<17=false,不换40 56 23 17 8
j:5~3,比较了3次
第3遍处理:i=3
d(j)<d(j-1):d(5)<d(4)――40<56=true,换40 56 23 17 8
d(j)<d(j-1):d(4)<d(3)――40<23=false,不换56 40 23 17 8
j:5~4,比较了2次
第4遍处理:i=4
d(j)<d(j-1):d(5)<d(4)――56<40=false,不换56 40 23 17 8
j:5~5,比较了1次
3.得出结论
数组中有n个元素d(1)~d(n)时
处理遍数i:
n-1遍;i=1 To n-1
每遍比较次数:
n-i次
每遍比较时下标j的变化:
j=n To i+1 step -1
总比较次数:
(n-1)+(n-2)+…1
n*(n-1)/2次
4.分组探究
冒泡排序算法设计(导学案二)
在什么情况下需要交换
生:排序的遍数用I表示,I的变化是从1到n-1
每一遍比较的次数用J表示,J的变化是从n到I+1
比较d(j)和d(j-1)之间的关系,如果d(j)<d(j-1),则进行交换。
交换需要一个变量临时存储数据,我们用temp,这样我们设计的算法是二重循环+选择结构,内循环的循环体是选择结构。
师:引导学生归纳,学生回答结束后点评总结。
5.算法设计
二重循环+条件语句
For i=1 to n-1
For j=n to i+1 step -1
If d(j)<d(j-1) Then
temp=d(j)
d(j)=d(j-1)
d(j-1)=temp
End If
Next j
Next i
6.课堂拓展
如果要按照从大到小次序排序,应如何修改冒泡算法?