选修1算法与程序设计《23排序》课教案.docx
冒泡排序教学设计一、教学目标知识目标:1、掌握冒泡法排序的算法原理。2、掌握冒泡法排序的算法实现过程。3、分析问题、理解问题,能在VB源程序中完善程序。4、能用冒泡排序法解决实际数据排序问题。能力目标:1、培养学生观察、分析和解决问题能力2、培养学生小组协作、互帮互助的能力。3、培养学生综合考虑问题,解决问题的能力,拓展学生思路,培养创新精神。情感态度与价值观:1、培养学生逻辑思维能力,使学生将自己的逻辑思维运用到计算机程序设计过 程中。2、培养学生对程序设计的兴趣和,以及利用程序设计解决实际问题的能力。二、学情分析本节课内容为算法与程序设计第三章第四节“对数据进行排序”第一小节内容,学生掌握了程序 设计的三种结构和数组的应用,同时,已经学会分析双重循环的的程序结构,前面也已经学了解析法 和枚举法两种典型算法,为学习冒泡法排序的算法奠定了基础。但是初次接触排序算法的思路和原理, 新课程标准对排序算法的要求是“通过实例,使用排序算法设计程序解决问题”。冒泡法排序算法是 程序设计中的重要算法,讲解需要尽可能详尽,分析尽可能清晰,运用多种方式加强学生对冒泡法排 序算法的理解。三、教学重难点重点:冒泡排序算法的思路、原理和实现过程。难点:1、冒泡排序算法过程中,对n个数据进行排序进行遍历的次数和每次遍历过程中比较的次数 和交换的次数,即双重循环中各个循环变量的意义。2、不同方式的几种冒泡排序的区别和共性,以及提高冒泡排序效益的思路。四、教学活动活动1【导入】导入:创新情景师:同学们,相信大家对于“大数据''这个词已经不再陌生。面对大量的数据,数据进行分析和统计尤 为重要。回顾大家已经学过的excel电子表格处理,数据统计中一项重要的工作就是对数据进行 排序。比如:考试后,排名需要按照成绩从高到低排序;运动会跑步,名次需要按照耗时从少 到多排序,那么,数据到底是怎样进行排序的呢?在介绍排序之前,请同学们先玩一个老师制作的小动画!师:下发小动画。生:点击运行,试一试,看一看,想一想。师:人脑与电脑不同。人脑通过高级思维和逻辑判断,得出结论。而电脑则依据一定的规律,遵循 一定的规则来完成某项任务。师:请同学们讲一讲,他们干了些什么事情?是怎么做到的?师:其实,同学们刚才玩的这个小动画,正是完成了一个从小到大,从后到前的冒泡排序过程。生:下面学生认真观察,积极开动脑筋,分析这种排序的规律和原理。活动2【活动】冒泡排序的基本原理师:乘热打铁,借助刚才动画的演示,提出冒泡排序的基本原理:对每两个相邻的元素进行比较,若 为逆序,则将两者交换,这样的操作反复进行,直至全部记录都比较、交换完毕为止。活动3【活动】师生互动,实践讲解师:为了让大家更好地理解冒泡排序的原理,我们用一个实际的例子来具体分析讲解一下。例题:用 冒泡排序法将下面数组a(n)中的a到a(6)的无序数从小到大排序。33,67,17,58,23,9依据冒泡排序原理步步分析,层层推理。与学生一起对每一趟遍历和每趟遍历中的比较和交换进 行分析和理解,完成表格内容的填写,将数字量化。生:在自我探讨,理论分析,小组协助等方式下完成表格内容的填写,在潜移默化中获得冒泡排序的 原理和思路。师:每次扫描称为一趟遍历。冒泡排序经过第一趟遍历,就将最大(或最小)元素排在最后(或第一个) 位置。再对后n-1个元素重复同样操作,将第二大(或第二小)元素安排在倒数(或正数)第二个位置。 重复以上过程,直至没有元素需要交换。师:分析冒泡排序原理,进行推导,得出其规律。n个数排序的总遍历趟数为n.l, n个数排序比较次 数为n*(n-l)/2。n个数排序,最坏情况交换次数为n*(n-l)/2。活动4【活动】学生活动完成随堂练1和2的针对练习。1、数组元素分别是82、113、46、69、35。采用冒泡排序对其进行排序,若完成第一遍时的结果是 35、82、113、46、69,则完成第二遍时的结果是()A. 35、 82、 113、 46、 69B. 35、 46、 82、 69、 113C. 35、 46、 82、 113、 69D. 35、 46、 69、 82、 1132、篮球联赛中,有5个班级的比赛积分依次为14, 11, 13, 8, 9o若采用冒泡排序算法对其进行从 大到小排序,需要排几遍交换几次()A. 1, 2 B. 4, 2 C. 1, 8 D. 4, 8活动5【活动】师生互动,流程图、算法推理师:程序的什么结构可以完成这种排序要求?(循环结构)循环需要用一个变量来控制循环次数,从而 引出用变量i来记录正在执行的排序的遍历趟数。师:继续引导,那么每趟的比较怎么办?这里又需要用一个变量来标识正在参加比较的数组元素的下 标,引进变量j:记录一遍处理过程中,当前数组元素的下标。生:思考如何完成循环嵌套实现冒泡排序。学生完善流程图的填空师:讲解展示正确结果,对出现的问题进行分析,纠正。同时,引出对冒泡排序的程序段推理 有特例到普遍:第1趟遍历For j= n to 2 step -1 if a(j)<a(j-l) then t=a(j):a(j)=a(j-l):a(j-l)=t end ifNext j第2趟遍历For j= n to 3 step -1 if a(j)<a(j-l) then t=a(j):a(j)=a(j-l):a(j-l)=t end ifNext j寻找规律得出通式:For i= 1 to n-1For j= n to i+1 step -1 if a(j)<a(j-l) then t=a(j):a(j)=a(j-l):a(j-l)=t end ifNext jNext i活动6【活动】小组协作,冒泡排序的拓展题师:因为已经分析了冒泡排序的程序段,故分发vb程序段,让学生进行自主分析、思考,尝试性实 践操作,不断的更正,修改,以得到正确答案。不懂可进行小组协作,互帮互助。? n个数从小到大排序:从后往前,小数上浮。2 .n个数从小到大排序:从前往后,大数下沉。For i= 1 to n-1For j= n to i+1 step -1if a(j)<a(j-1)thent=a(j):a(j)=a(j-l):a(j-l)=t end ifNext jNext iFor i= 1 to n-1For j= 1 to n-iif a(j)>a(j+1) then t=a(j):a(j)=a(j+l):aG+l)=tend ifNext j Nexti3 . n个数从大到小排序:从后往前,大数上浮。4 .n个数从大到小排序:从前往后,小数下沉。For i= 1 to n-1For j= n to j+1 step -1if a(j)>a(j-1)thent=a(j):a0)=a(j-l):a(j-l)=t end ifNext jNext iFor i= 1 to n-1For j= 1 to n-i if a(j)<a(j+1) then t=a(j):a0)=a(j+l):a(j+l)=t end ifNext jNext i可以请同学们上来尝试个别操作。教师指点、答疑、解惑。生:自主实践操作,将尝试结果填写在随堂练习的第3题中,并完成第4和5题。活动7【课后作业】冒泡排序的改进方案为什么改进?怎么改进?四、课程小结1、排序的关键步骤就是比较和交换。2、冒泡法排序是通过顺序扫描数组元素,将相邻两个数进行比较,将小数调到前面,大数调到后面。3、如果有n个数,则要进行n-1轮排序。在第i轮排序中,要进行n-i次两两比较。4、强调冒泡排序的思想、冒泡排序原理及程序实现。巩固所学的知识,思考如何利用冒泡排序算法解决更多的实际问题。