资源预览内容
第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
亲,该文档总共6页全部预览完了,如果喜欢就下载吧!
资源描述
冒泡排序一、教材分析:冒泡法排序是高二选修课算法与程序设计第三章第四节中的第一小节,要求学生掌握用冒泡排序算法解决问题的方法。排序算法是使用频率最高的算法之一,而冒泡排序是一种很典型而且相对简单的算法。本课时包含冒泡排序的算法思想及其程序实现。学生可以通过程序实现的整个过程形成对双重循环再理解及应用,进一步加深对循环的理解,同时通过问题分析、算法描述、程序设计、运行调试等过程,深入理解算法与程序设计在计算机解决问题过程中的作用和意义,为今后算法与程序设计方面的进一步学习打下基础。二、学情分析:本节内容具有一定趣味性,学生的积极性较为容易调动,但是在掌握理解上存在一定难度,虽然学生已经学习了程序的三种基本结构、数组、循环语句等vb语言的基础知识,具备了一定的编程能力,但由于实践较少,对知识的遗忘率较高,对程序的整体编写还存在困难,因此由浅入深,层层递进较符合当前学情。三、教学目标:(一) 知识与技能:1通过对数组的复习使用,回顾用简单的数组处理、表示数据.2通过知识讲解及当堂练习,掌握冒泡排序的原理并学会用冒泡法对数据进行排序.3通过小组讨论探究,层层深入,掌握冒泡排序程序的实现.(二)过程与方法:1. 通过小组讨论,确定程序所需主要语句,提升交流合作能力。2. 通过小组探究,完善程序,提升主动性与自主学习和交流合作的能力。3. 通过小组探究,对程序代码测试、查错、修改,锻炼主动思考和反思,培养元认知。4. 通过冒泡排序程序实现的过程,培养学生分析问题、发现规律的能力及以及良好的书写习惯。(三)情感、态度与价值观:1. 通过学习,能激发学生对算法与程序设计课程的热爱。2. 通过小组合作,增强责任感跟合作意识。3. 通过冒泡排序程序的实现,增强对程序代码“美”的感受。四、教学重点、难点:(一)教学重点:冒泡排序原理及程序实现。(二)教学难点:冒泡排序的程序实现 五、教学方法:演示法、讲授法、讨论法、练习法。六、课时:1课时七、教学过程:(一)观看视频,导入新课. 视频:我是歌手第三季第12期中名次揭晓片段。教师:在视频中,李健提到他们的名词揭晓方式在数学中称为“冒泡法”,那么冒泡排序的整个过程是怎样的呢?是否跟视频中一致呢?我们这节课讲解“冒泡排序”。(二)知识讲解,初识冒泡1.知识讲解教师:怎样实现冒泡排序呢?我们来看一个具体的实例。突围赛竞演男明星年龄表李荣浩古巨基胡彦斌郑淳元萧煌奇李健304332413941用冒泡排序思想将年龄排成升序序列教师讲解冒泡排序的第一轮冒泡,由学生完成后三轮的讲解,现总结结果如下:循环轮数比较结果比较次数第一轮确定最小数: 30a(1) 5第二轮确定第二小数:32a(2)4第三轮确定第三小数:39a(3)3第四轮确定第四小数:41a(4)2第五轮确定第五小数:41a(5)1最大数:43a(6)归纳小结:N个数相比较,总共要比较N-1趟,第一趟要比较N-1次,第二趟要比较N次第N-1趟要比较1次依次递减2.当堂练习(1) 对“941362”中的6个数码进行两轮冒泡排序后的顺序为( )A .634921 B.462319 C.129436 D.964321 (2) 采用冒泡排序算法对参加我是歌手第三季的女明星年龄进行排序: 年龄第一轮第二轮第三轮第四轮第五轮第六轮44(韩红)32(黄丽玲)43(陈洁仪)31(张靓颖)33(谭维维)27(李佳薇)3.归纳定义教师:什么是冒泡法排序?学生:根据讲解自定义冒泡排序。总结学生给出的定义:从最后一个数据开始,比较相邻数据,把较小的数据逐次向上推移的,形成一列升序序列的排序技术。教师:回忆课前视频,是否是按冒泡排序思想排序?排成的数列是升序还是降序?是否是从最后一个数据开始比较?是否是比较相邻数字?学生思考。教师:由以上几个问题得出上面定义不正确,冒泡排序可以从第一个数字开始也可以从最后一个数字开始,必须比较相邻数字,最终排成的可以是升序也可以是降序,有序即可。所以重新定义,如下:冒泡排序也叫起泡法排序,是一种比较简单、易懂的交换排序方法,它通过将相邻元素进行比较和交换,逐步将一个无需序列排列为一个有序序列。将元素按从小到大的顺序排列称为升序排列,反之称为降序排列。(三)师生互动、层层深入教师:思考怎么用visual Basic语言表述冒泡排序?1.第一轮冒泡(1)小组讨论:如何在程序代码中解决以下问题?1)怎样确定比较的是相邻的数组元素?2)用什么语句实现比较数字大小?3)用什么语句实现重复比较2个数字的大小?在此过程中,教师巡视,回答学生疑问,并记录学生出现的错误以及突出表现。小组代表选题,回答问题。此过程教师纠正或补充问题答案。答案如下:1) 通用数组下标确定是相邻数组元素,如:a(j)与a(j-1)2) 用if语句实现比较2个数组元素的大小。3) 用for循环语句实现重复比较2个数组元素的大小。 (2)小组合作探究:根据以上讨论结果完善代码并在visual Basic 环境中测试、修改。代码框架:完整代码:dim I,j as integera(1)= 30:a(2)=43:a(3)=32:a(4)=41:a(5)=39:a(6)=41For j= 6 to2 step -1 if a(j)a(j-1) then t = a(j) a(j) = a(j - 1) a(j - 1) = t End ifNext j2.其余五轮冒泡任务:根据第一轮冒泡代码,完成其余四轮代码并在在visual Basic 环境中完善程序。教师:代码如下:第二轮: For j= 6 to 3 step -1 if a(j)a(j-1) then t = a(j) a(j) = a(j - 1) a(j - 1) = t End if Next j第三轮:For j= 6 to 4 step -1 if a(j)a(j-1) then t = a(j) a(j) = a(j - 1) a(j - 1) = t End if Next j其余两轮代码省略总结:观察以上五轮冒泡排序代码可以发现:只有表示数组下标的变量j的最小值在不断变化,其他代码都完全一致。也就是相当于把几乎一致的程序段重复书写了5次。以此得出,我们又可以将以上程序段外再加一个循环,内部本身就是一重循环,这样嵌套循环就实现了整个排序的过程。根据内外循环变量的变化关系设置内循环的终值。3.完善程序(嵌套循环)(1)小组探究:完善程序,要求输出最终数列。教师巡视,回答学生疑问,并记录学生出现的错误以及突出表现。(2)学生演示,并讲解程序。程序:Dim a(1 To 6) As IntegerDim i, j, t, k As Integera(1)= 30:a(2)=43:a(3)=32:a(4)=41:a(5)=39:a(6)=41For i = 1 To 5 For j =6 To i + 1 Step -1 If a(j) a(j - 1) Then t = a(j) a(j) = a(j - 1) a(j - 1) = t End If Next jNext iFor k = 1 To 6 Print a(k);Next k(四)交流评价、归纳总结1.小组组长按组号排成一列,用冒泡排序算法思想按本节课小组得分排成升序序列。2.每位学生撰写反思日记。(六)教学反思本节课以学生感兴趣的电视节目我是歌手引入,可激起学生的学习兴趣,但是要把握好度,适时的将学生拉回到课堂中来。教师积极引导,循序渐进、层层深入,同时学生积极参与,主动思考,理解冒泡排序算法思想,找出算法规律,自己动手编写程序。但仍需改进:1.教学目标部分,尤其是情感态度价值观部分确定的有些牵强,是否需要严格按课堂达到的目标来确定,还是应提升到更高层次这一直都是自己比较困惑的地方。2.小组讨论部分,通过3个问题确定出代码框架。采用算法的描述方式,如流程图或伪代码的形式或许更好,而且更直观。3.因为学生个体差异较大,在整个程序完成过程中,仍有少数同学未完成任务,有些组长没有发挥好领导协调作用。应发掘更优秀组长,充分调动他们的积极性。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号