视频标签:冒泡排序算法
所属栏目:信息技术优质课视频
视频课题:教科版高中信息技术算法与程序设计模块第三章第四节《冒泡排序算法》宁夏省级优课
本视频配套资料的教学设计、课件 /课堂实录及教案下载可联本站系客服
《冒泡排序算法》教学设计
一、教材分析
该课使用的教材是由教育科学出版社出版的普通高中课程标准实验教科书《算法与程序设计》,本节《冒
泡排序算法》为教科版《算法与程序设计》模块第三章第四节第一小节的内容。可与第五章代码编写上机调试合成用两课时,本节为一课时。
二、教学目标: 知识技能目标: 掌握冒泡排序的原理,能理解绘制冒泡排序算法流程图,学会编写冒泡排序程序主要代码。
过程方法目标: 在利用冒泡排序思想设计算法、解决排序问题的过程中培养善于分析问题,发现规律的能
力;养成自顶向下,逐步细化和模块化的程序设计素养。
情态价值观目标: 提高学习热情,增强合作意识,体验成功设计最优方案解决问题的喜悦与幸福。 三、教学重难点:
重点: 冒泡排序原理的理解及其流程图绘制
难点: 冒泡排序过程中遍、次概念的理解;规律的找寻与发现 四、教学策略分析 1.学情分析
高中学生具有较强的逻辑思维能力,能够通过教师引导、学生合作讨论发现规律突破难点。 2. 教学准备:多媒体网络教室、教学课件、相关教学软件。
3.教法:情景体验法、任务驱动法、讲解演示法、分析归纳法、师生互动法。 4.学法:自主探究法、小组合作讨论法。 五、教学过程 环节 教师活动
学生活动 设计意图 一、 回 顾 引 出 课 题
1. 质疑:回顾算法定义
大家好,欢迎进入《冒泡排序算法》的学习!
先来看这样一个问题:有两个杯子A和B,分别盛放油和醋,现要求交换两杯中的液体(即A原来盛放油,现要改为盛醋,B则相反)。 请同学们思考并说出解决问题的方法和步骤?
2. 演示答疑(教师实物演示)
3. 出示图1形像答疑 4.出示方法和步骤:
方法:根据常识,必须增加一个空杯C作为过渡。 步骤:第一步:先将A杯中的油倒入C 杯; 第二步:再将B杯中的醋倒入A杯;
第三步:最后将C杯中的油倒入B杯。 5.出示简化表示:可以简化表示为图2
6.出示流程图:用流程图表示为图3
7出示算法定义: 在计算机程序设计中我们把这种解决问题的方法和步骤 称为算法。( Algorithm:就是解决问题的方法和步骤) 接着来看:要将无序序列5 7 4 2 8 3变成有序序列应采取 什么算法?(排序)
8出示排序定义:过渡引出课题
排序作为一种常用的算法被广泛的应用于我们的日常生活中,就是将一个无序序列变成有充序列的过程。排序的方法很多,冒泡排序是一种比较简易懂、典型而常用的算法。
同学们能列举一到两个用排序算法解决问题的事例吗?
1、 思考
2、 讨论 3、 答疑 4、 观看 5、 理解
方法 步骤 6、 回顾
算法
回顾让学生明确算法是计算机程序设计的灵魂
A油 B醋 C空
①②③图1 图2 A
C
B
A
C
B
图3
结束
A C
B C B
开始
比如 :Excel中我们点击“排序”按钮就能迅速而轻松完成学科成绩排名; 再比如:运动会小组选手成绩排序(出示小软件并演示),只需点击 “排序”按钮就能完成排序!
同学们是否想过为何计算机有如此神奇的功能!看计算机解决问题的过程。 9.出示计算机解决问题的过程
通俗地讲,就是把人解决问题的思维用计算机能识别的程序设计语言(比如VB)表达出来交给计算机一条一条地去执行指令从面使问题得到解决 具体如下:
可以看出,4个过程中, 3个过程由人完成,解决问题还得靠同学们,对吗! 10.过度入题
对,这节课的任务就是:要我们一起探索、解读神奇的冒泡排序原理,学会用冒泡排序算法设计、解决排序问题。(平台展示教学重、难点)大家有没有这个勇气和信心吗!
以神奇的功能演示激发学生学习热情
指出神奇也是人所为打消惰性心理,促成积极参与教学 二、 创 设 情 景 导 入 主 题 出 思 想 找 规 律
1. 首先我们请学号为1到6的同学上来表演一下排队!(按学号1到6从
左到右排成一行)
2. 再请这6位同学按身高从高到低,从左到右排成一行 3. 指着其中最高的学生问大家:大家看,他(她)是怎么知道自己最高的? 4. 指着最高的学生问:那这位同学请你说你自己是怎样排上来的?(教师
要特意引导学生说出“和相邻的同学比较并交换”上来,而且进一步说明“看”、“本来高”其实是参与了人脑思维的飞速比较!)
5. 追问:计算机不像同学们一样看不见,摸不着,也不会思维,它能完成
完成排序吗?能!(前面的排序演示说明确实可以)怎么个能法?
6. 6位同学稍等一下,和大家一起先想象一下“冒泡”是怎样一个情景。
(石头落入水中,冒起一串串泡泡 序列中大数“沉”下去,逼着小数“浮”上来 靠什么“沉”和“浮”(不会是自动吧) 相邻两数多次,多遍“比较”、“ 交换”完成) 7. 出示冒泡排序思想:也叫“起泡排序法”,它通过将相邻元素进行比较和
交换,逐步将一个无序序列排列变为一个有序序列。 1. 比较与交换的强调:在此思想上要领会两点:
① 首先要进行多遍比较,每一遍开始总是从第1个和第2个比起,如果第1个大于第2个,则交换,否则不动;第2个和第3个比……,一遍查找结束会找到最大的一个数,即沉下得到一个大数算一遍。(大数下沉,小数上浮)
②再有每一遍要进行多次比较,第几次就是第几个数和它后面相邻的一个比,两个数比较完成算一次。 2. 究竟怎么个冒法:归位再表演
请同学们再按学号排回来,充当要排序的数据,这次你们6人尽量不要渗入个人看、比、换,按我们大家的冒泡想法表演看结果何如! 教师当解说,特别强调: ①开始与结束(“开始第一遍排序”、得到一个最大的数,“一遍结束”) ②怎么算一遍,怎么算一次(相邻两人比较完成算一次)
排队结束,进一步强化冒泡排序的思想原理:其实质是在相邻两人在多次的
比较与交换中查找到最高的一个人,再重复查找找到次高的人,……,依次类推,最终在反复的比较交换中完成排序。
1.表演 2.再表演 3.可能回答“一看就知道”“本来高”等。 4.看、比、换
5.疑惑: 怎么个冒泡法
6.看演示,筹款模型(依据教师描述) 7.理解定义
8.理解学习强调 9.表演中演中理解“遍”、“次”的概念
10.回座位
1.学生充当数据序列表演比用单纯数据更能吸引学生参与和加深理解 2.设计第一次表演是人为的参与排序 3.设计第二次表演是有意识减少人的看、比换思想渗入,减少人参与的机械性机器排序,为后面的设计作铺垫
开始 分析问题 设计算法 编写程序 运行程序 验证结果 解决 图4
3. 请同学回座位:请同学们回到座位去,谢谢表演与配合。
三、 画 图 任 务
驱 动 小
组 探
究
合
作
讨
论
检 查 展 示 修
改
完 善
(过渡)为了直观描述冒泡排序算法,我们试着有流程图来表示。
任务一:回顾流程图及三在结构和对应的语句 ①回顾流程图 A.流程图(Flow Chart): 也称为程序框图, 它是算法的一种
形象、直观的图
形化表示,由一 系列流程图符号 组成。通俗地讲:就是用一系列代表特 殊含义的图形符号勾勒出解决问题的思 路来。 B.图例:
②回顾程序设计的三大结构和对应的可用语句
(动画演示执行流程,平台呈现结构,板书语句)
任务二:试探中画出冒泡排序流程图 采用自顶向下,逐步细化的方式,由特殊到一般归纳总结,教师以具体排队为引领,以填表总结的规律为基础一一突破各个难点。
任务分解:一组一图;组间交换检查;对比展示;修改完善
①粗略画出总流程图
总体看:我们在做了什么?(冒泡排序!)请画出总图(教师引导,学生尝试画图 平台呈现图9左,(学生惊叹:就这么简单!)学生对比 师生完善并进一步细化) (过渡)教师出示图9,指着图中“冒泡排序”模块,让学生形象地表述冒泡排序顺势由图9得出图10。
(过渡)流程图1中的“不断”有没有个终了!(有),其实质是个什么 跟教师回
顾
1.试探中勾勒出草图
促进学有
余力的学生
开始结束 输入输出
判 断
处 理 连接点 流程线
图5 流程图图例 循环条件 循 环 体
图8循环结构(for语句) Y N 图7 条件结构(if语句) 语句A 语句B 条件 Y N 语句A 语句B 图6 顺序结构 开始 结束 冒泡排序 图9粗略的总流程图 开始 结束 大数不断的“下沉”,小数不断的“浮起”(被逼起)
图10 流程图1
手 动 执 行 验 证
结构?怎么控制这个终了?(循环,因为反复进行了5遍查找;可以定义变量i来记录正在排序的遍数控制循环的次数,当i>5时不再查找行吗),教师顺势给出图11, ②细化一:外层循环图
(过渡)指着图11中“共“沉”了5遍”问学生:计算机能识别执行吗?(不行)还得具体一点,:这个图好像不够规范,反复5遍其实质是5次循环,想想用循环结构图表示出来(学生思考修改片刻教师出图12)(最先画出的小组可以上来用实物投影展现给大家!)
(过渡)如果参与排序的数是n个呢?(把图10中的6变为n 即可!) 细化二:内层循环图(不断两两比较,沉下一个大数的流程图)
(过渡)指着图13中“沉下一个大数”模块问学生:计算机还是不能识别文字执行,再具体一点也把“沉下一个大数”模块用字母数字符号表示出来。 分析:其实从前面学习所知,每沉下一个大数,即一遍查找完成要反复相邻两两比较多次,其实质也是一个循环结构!而且每遍又不一样。但是根据任务一中的规律二可知每遍比较的次数还是有上限的,可以定义数组来存放要排序的一列数,定义一个变量j来记录一遍处理过程中当前数组元素的下标,来控制内层循环。由规律二知:j=n-i(次数=总数-遍数)
(学生思考依据教师引导艰难地试探画出内层循环图)
2.依教师提示规范蓝图
3.检查对比
4.修改完善
开始 结束
一遍“沉”下一个数 共“沉” (5)遍
图11 流程图2 图12 流程图3(6个数进行了6-1遍查找流程图)
开始 结束
i =1 i<=5(6-1)
沉下一个大数
i=i+1
Y
N
图14 流程图5 (第i遍不断两两比较,沉下一个大数的流程图)
N Y Y N 到外层循环
j=1 j<=n-i d(j)>d(j+1j=j+1 互换d(j)与d(j+1)的数据
图13 流程图4
(n个数进行了n-1遍查找流程图) 开始
结束
i =1
i<=n-1 沉下一个大数 i=i+1 Y N
(过渡)如何得到嵌套循环总图?(用图14替换图13中的“沉下一个大数”模块!)
任务三:手动执行简单验证
请同学们手动执行看能否执行的通。思考如何交付计算机执行。
任务四: 对照主流程图编写主要代码。
(课后作业,为下节上机调试做准备,只做提示,不要求课堂完成 (1) i:记录正在执行的排序的遍数,从1到n-1
for i=1 to n-1 “沉下一个大数,“浮”起一个小数
Next I (2) j记录一遍排序过程中,当前数组元素的下标,从1到n-i For j=1 to n-I d(j)与d(j+1)比较,若大则交换,否则不动 next j (3)d(j)与d(j+1)互换 K=d(j): d(j)=d(j+1):d(j+1)=k(油、醋互换的)赋值操作) (4)把(1)、(2)、(3)嵌套可得到冒泡排序的主要代码 for i=1 to n-1 For j=1 to n-I If d(j)>d(j+1) then K=d(j): d(j)=d(j+1):d(j+1)=k endif next j Next i
5.手动验
证。
依时间多少尝试课堂编写或课后或下节课前编写并准备机调试。
N 开始
结束 i =1 i<=n-1 i=i+1
Y 图15 流程图6
N Y Y
N 到外层循环
j=1 j<=n-i d(j)>d(j+1j=j+1
互换d(j)与d(j+1)的数据
输出已排序列d
四、 小 结
1.算法 2.排序
3.计算机解问题的过程 4.冒泡排序算法的原理 5.冒泡排序算法流程图
6.流程图到程序设计语言的转换
填表 互换检查 平台展示 修改完善
五、 作 业 与 练 习 依 学 情 可 以 调 到 最 后 进 行 并 可 以 调 整 难 度
作业:
1、尝试把总流程图转换成VB程序设计语言(为下节上机调试程序作准备) 2、设计一个评分流程图,6个评委,最后得分为去掉最高分和最低分的平均分。 练习:
对无序序列:5 7 4 2 8 3用冒泡排序的思想完成填表 填表前请看教师对表一填法。(引导) 填写表一到表六 : 1. 按顺序一组一表
2. 组间交换检查填表结果
3.展示给大家
4.对比教师所给修改所填表格
填表加固冒泡排序思想
师:填表前板示第一遍第一次排序来规范和节约学生填表时间
①引导填写表一到表六,并实物投影展示小组填写结果分析对比 对无序序列:5 7 4 2 8 3用冒泡排序的思想完成填表。
原 序 列 一遍1次 (第1、2比) 一遍2次 (2、3比) 一遍3次 (3、4比) 一遍4次 (4、5比) 一遍5次 (5、6比) 5 7 4 2 8 3 5 7 4 2 8 3 5 4 7 2 8 3 5 4 2 7 8 3 5 4 2 7 8 3 5 4 2 7 3 8
表一:6数共计进行(5)次比较;一遍查找到(1)个最大的数;剩(5)个数仍无序。
一遍结果 二遍1次 (1、2比 ) 二遍2次 ( 2、3) 二遍3次 (3、4 ) 二遍4次 ( 4、5)
5 4 2 7 3 8 4 5 2 7 3 8 4 2 5 7 3 8 4 2 5 7 3 8 4 2 5 3 7 8
表二:剩5数共计进行(4)次比较;一遍查找到(1)个最大的数;剩(4)个数仍无序。
二遍结果 三遍1次 (1、2 ) 三遍2次 (2、3 ) 三遍3次
(3、4 )
4 2 5 3 7 8 2 4 5 3 7 8 2 4 5 3 7 8 2 4 3 5 7 8
表三:剩4数共计进行(3)次比较;一遍查找到(1)个最大的数;剩(3)个数仍无序。
加固学习
与掌握
六、教学反思:想办法让学生不要闲着,在自顶向下,逐步细化中一一解决突破重难点是本课成功的关键。 七、 板书设计:
三遍结果 四遍1次 (1、2 ) 四遍2次 (2、3)
2 4 3 5 7 8 2 4 3 5 7 8 2 3 4 5 7 8
表四:剩3数共计进行(2)次比较;一遍查找到(1)个最大的数;剩(2 )个数仍无序。
原 序列
一 遍 排 序
二遍排序
三遍排序
四遍排序
五遍排序
5 7 4 2 8 3
5 4 2 7 3 8 4 2 5 3 7 8 2 4 3 5 7 8 2 3 4 5 7 8 2 3 4 5 7 8
四遍结果 五遍1次 (1、2 ) 2 3 4 5 7 8 2 3 4 5 7 8
表五:2数共计进行(1)次比较;一遍查找到(1)个最大的数;剩(1)个数仍无序。
表六:大数下“沉”下去,小数“浮”起来。
六、 质 疑 拓 展 优 化
现在,同学们对冒泡反序的整个过程有什么问题,可以大胆的提出来我们共同思考解答! 1.对于无序序列5 7 4 2 8 3的排序有必要这样烦人吗,一眼就可以看出来的! 2.对于相当大的待排序列,计算机能吃的消吗?(特点)
3.能,哪在时间、空间上有要求吗?(可以网上了解,优化冒泡排序改进方案) 4.在计算机中数字和数据的概念一样吗?
5.逆向思考(从最后一个数往前比,小则交换,能不能完成排序) 6.学以致用:你怎么知道冒泡排序原理的,教师是怎样画出流程图的!
整理
理顺学习
思路
1. 算法 2. 排序 3. 计算机解问题的过程 4. 冒泡排序算法的原理 5. 冒泡排序算法流程图 6. 填表 遍数:i(控制外层循环变量)
次数:j(控制内层循环变量)
总数:n
规律:
i=n-1
j=n-i
参考以下图例画冒泡排序流程图:
第一组:画出粗略的冒泡排序总流程图
第二组:画出外层循环流程图(比较遍数循环图)
第三组:画出内层循环流程图(比较次数循环图)
第四组:画出内层循环流程图(比较次数循环图)
第五组:画出内外层嵌套循环总流程图(粗略地勾勒出框架) 第六组:画出内外层嵌套循环总流程图(粗略地勾勒出框架)
视频来源:优质课网 www.youzhik.com