高中信息技术选择性必修1高二年级冒泡排序及其变形教学设计_第1页
高中信息技术选择性必修1高二年级冒泡排序及其变形教学设计_第2页
高中信息技术选择性必修1高二年级冒泡排序及其变形教学设计_第3页
高中信息技术选择性必修1高二年级冒泡排序及其变形教学设计_第4页
高中信息技术选择性必修1高二年级冒泡排序及其变形教学设计_第5页
已阅读5页,还剩7页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

高中信息技术选择性必修1高二年级冒泡排序及其变形教学设计一、教学依据与设计理念本课选自浙教版(2019)高中信息技术选择性必修1《数据与数据结构》中排序单元的开篇内容,对应课程标准中"通过实例理解常见排序算法的基本思想,能分析算法的时间效率"这一学业要求。排序是学生从"会使用数据结构"走向"会设计算法"的关键节点,而冒泡排序又是整个排序家族的逻辑起点,其相邻比较、逐趟交换的思想贯穿于后续选择排序、插入排序乃至快速排序的学习之中。本设计立足高二学生已经具备Python基础语法、列表操作和循环嵌套经验的学情,以"班级身高排队"为明线、以"算法逐步优化"为暗线,组织三个层层递进的学习任务:从模拟一趟冒泡,到完整实现冒泡排序,再到发现无效比较并引出提前终止与鸡尾酒排序等变形。整节课坚持"让数据说话、让比较可见"的原则,把抽象的比较次数、交换次数转化为可统计、可视化的课堂数据,使学生在反复"做—测—改"的过程中建立算法效率的直觉。二、学情分析授课对象为高二年级选考信息技术的学生。从知识储备看,学生已熟练掌握for循环、while循环、列表索引与切片,能够独立编写三十行以内的程序;从思维水平看,多数学生能读懂双重循环的字面结构,但对"外层控制趟数、内层控制每趟比较范围"这种分工缺乏自觉意识,常常把两重循环写成对称结构,导致算法冗余;从情感态度看,学生对玩游戏、排顺序这类活动兴趣浓厚,但对"为什么要有序""有序带来什么好处"缺少真实体验。据此预判,本课可能出现三类典型困难:其一,交换两元素时漏用临时变量,写成a[i]=a[i+1]再a[i+1]=a[i]的覆盖式错误;其二,内层循环边界写成len(a)而非len(a)1i,引发索引越界或无效比较;其三,理解不了"提前终止"标志位的意义,认为多比较几轮无所谓。教学设计中针对每一类困难都预埋了对应的诊断活动。三、教学目标1.信息意识:通过体检排队、成绩排名等情境,认识到有序数据在检索、统计中的价值,形成"先整理再使用"的数据处理意识。2.计算思维:经历"一趟冒泡—完整排序—优化改进"的完整抽象过程,能用自然语言、流程图和Python代码三种方式描述冒泡排序,理解双重循环中内外层变量的职责划分,体会"以空间换时间"与"以标志位省趟数"的优化思想。3.数字化学习与创新:能借助打印中间结果、统计比较次数等手段观察算法运行过程,通过对比不同输入规模下的比较次数数据,归纳冒泡排序时间开销的数量级特征。4.信息社会责任:在小组互评中基于比较次数、代码可读性等证据评价他人算法,养成用数据说话、按规范协作的工程习惯。四、教学重点与难点重点:冒泡排序相邻比较、逆序交换的基本思想;双重循环结构中外层趟数与内层范围的正确设计。难点:理解"每趟冒泡后有序区扩大一位"的不变式,进而理解提前终止标志与边界收缩(鸡尾酒排序)等变形背后的优化逻辑。五、教学准备教师准备:身高卡片九张(标注160至176的打乱身高数)、磁性白板、安装Python环境的机房、随堂练习任务单、含有计时与计数代码框架的半成品程序文件bubble.py。学生准备:课前完成三个微任务——复习列表索引,写出交换两个变量的正确语句,运行教师下发的demo.py观察一次交换过程。六、教学过程(一)情境导入:最原始的排队办法(约6分钟)上课伊始,教师请九名学生手持身高卡片在讲台前站成一排,顺序故意打乱。教师提出问题:全校体检结束,医生希望按身高从矮到高记录数据,现在只允许一种操作——相邻两人比较身高,如果左边比右边高就交换位置,请问能不能把整个队伍排好?先请学生凭直觉猜想,再找一名学生上台充当"指挥员",从左到右走一遍,逢逆序就令两人交换。其余学生观察并记录:走完这一遍之后,队伍完全有序了吗?最高的那位同学站到了什么位置?学生会发现:走一遍之后,队伍未必整体有序,但最高者一定被"推"到了最右端。教师顺势板书两个关键词——一趟、就位,并引导学生说出这个现象的必然性:只要从头比较到尾,最大值每遇到一个比它小的就交换一次,像气泡一样一路漂到最右端,任何人都不可能把它拦下。紧接着教师追问:最大值已经就位,第二大的值该怎么办?要不要再从头走一遍?走到哪儿就可以停下?学生在回答中自然生成"每走一趟,右端就多固定一个人,下一趟的比较范围就缩短一格"的朴素结论。至此,冒泡排序的核心思想已经在具身活动中建立起来,教师板书课题:第16课排序1——冒泡排序及其变形。设计意图:用身体参与的活动替代干巴巴的定义讲授,使"一趟冒泡使最大值就位"这一关键不变式先以经验形态存在,为后续形式化表达埋下伏笔。(二)任务一:形式化描述一趟冒泡(约8分钟)教师将排队的身高数据抽象为列表a=[172,165,176,160,170,168,175,162,169],提出本课第一个编程任务:只写"走一遍"的代码,使得最大值交换到列表末尾,并把这一遍结束后的列表打印出来。学生独立编程,教师巡视。多数学生会得到如下代码:foriinrange(len(a)1):ifa[i]>a[i+1]:a[i],a[i+1]=a[i+1],a[i]教师随机投屏两份学生作品,组织"找茬"式点评。第一份是正确写法,请作者解释range(len(a)1)为什么减1——因为比较的是a[i]与a[i+1],i最多只能到len(a)2。第二份是常见错误:交换写成a[i]=a[i+1]a[i+1]=a[i]投屏运行后最大值消失,引发全班关注。教师请学生口头推演第三、第四两行的执行结果,让学生自己发现"先把a[i]覆盖掉,再把新值赋回去,原值已丢失"的覆写错误,随后给出并行赋值a[i],a[i+1]=a[i+1],a[i]与临时变量t两种规范写法,并强调"交换三步走"是必须养成的肌肉记忆。验证环节,全班统一以print输出交换后的列表,对照白板上的队伍照片确认176已处于末位。教师抛出一句话小结:会走一遍,才会走全程;冒泡排序的全部复杂性,都藏在"走几遍、每遍走多远"这两个问题里。设计意图:把完整算法拆成最小可验证单元,先消灭"交换"这一高频语法错误,再叠加循环结构,符合由局部到整体的认知顺序。(三)任务二:从一趟到全程——双重循环的诞生(约12分钟)教师提出问题链:一趟之后谁就位了?剩下还要排几个数?一共要走几趟?每一趟的比较范围如何变化?请学生在任务单上填表:第1趟比较8次、就位1人;第2趟比较7次、就位2人;……第8趟比较1次、就位8人。填毕引导学生归纳:9个元素需要8趟,即n个元素需要n1趟;第j趟(j从0计数)时,末尾已有j个就位,内层比较只需走到n1j为止。随后学生将任务一的代码主动"加长"为双重循环:forjinrange(n1):foriinrange(n1j):ifa[i]>a[i+1]:a[i],a[i+1]=a[i+1],a[i]教师巡批时重点检查内层边界n1j中的"j",这是全课最核心的细节。对写成n1的学生不单独批评,而是让其程序照常运行——结果依旧正确,教师借此制造认知冲突:多比较几次不影响结果,为什么要减j?留到效率分析环节再回答,形成悬念续航。程序验证采用三组数据:随机数据、完全逆序数据、已经有序的数据。学生观察到三种输入下输出全部正确,但内层循环的执行"感觉"不同,为下一任务埋下伏笔。安排一个两分钟的微讲授:教师用流程图呈现外层"趟计数"与内层"相邻比较"的分工,明确指出外层循环变量j的意义不是参与比较,而是划定本趟比较的右边界。请两名学生分别用自己的话复述两条循环线的职责,教师评价后板书:外层管趟数,内层管范围。设计意图:通过填表把趟数与比较次数的规律显性化,使双重循环的边界设计成为"算出来的结论"而不是"背下来的模板";故意让冗余写法先运行正确,为优化讨论积蓄素材。(四)任务三:让数据说话——效率的第一次度量(约8分钟)教师在半成品bubble.py中埋入计数器,请学生补全:每执行一次相邻比较,cnt_cmp加1;每发生一次交换,cnt_swap加1。学生用三组输入分别运行,把结果填入共享表格:第一组:随机数据[172,165,176,160,170,168,175,162,169],比较36次;第二组:完全逆序[176,175,172,170,169,168,165,162,160],比较36次;第三组:已有序[160,162,165,168,169,170,172,175,176],比较36次。三组比较次数竟然完全相同。教师把第三组数据放大:队伍本来已经排好,程序却一丝不苟地比较了36次、交换0次。这合理吗?教室里会出现自然的质疑声。教师引导学生推算n=9时36=8+7+…+1=n(n1)/2,指出无论输入如何,这个版本的冒泡都要走完固定的趟数,比较次数只与规模有关、与数据状态无关——这正是"蛮力"二字的含义。再请学有余力的学生把列表长度改为100、1000试运行,观察36、4950、499500的跳变,直观感受数量级的增长。设计意图:把"效率"从形容词变成数字。36次与0次交换的反差,是学生能够亲手制造的真实矛盾,远比教师宣讲"冒泡效率低"更有说服力。(五)任务四:给程序装上刹车——提前终止优化(约8分钟)承接上一任务的矛盾,教师提出优化问题:如果某一趟走下来,一次交换都没有发生,说明什么?学生不难答出:说明整个序列已经有序,后面的趟数纯属浪费。由此引出标志位优化。教师给出结构骨架,学生补全关键行:forjinrange(n1):flag=Falseforiinrange(n1j):ifa[i]>a[i+1]:a[i],a[i+1]=a[i+1],a[i]flag=Trueifnotflag:break补完后用同样的三组数据复测:随机组36次,逆序组36次,有序组骤降为8次。学生亲眼看到"刹车"生效。教师组织深度追问:为什么只有提前终止,比较次数才会随输入状态变化?请学生解释flag的生命周期——每趟开始置False,本趟一旦发生交换就置True,趟末检查,一趟无交换即全局有序。随后点明优化的代价:算法最好情况下的比较次数从n(n1)/2降为n1,代价是多维护一个变量、多一次判断。这是"以微小空间与判断成本换取可观时间"的典型权衡。针对学优生布置附加思考:若序列后部基本有序、前部混乱,提前终止还有没有用?为下一环节的鸡尾酒排序埋下引子。设计意图:优化的动机来自上一任务中真实测得的数据,标志位不再是"老师说要加",而是"数据逼着我们加"。学生在修改—复测—对比的循环中体会工程优化的完整闭环。(六)任务五:变形的视野——鸡尾酒排序与算法家族(约5分钟)教师演示一个特殊输入:[2,3,4,5,6,7,8,9,1]。最小值1在最右端。普通冒泡要把这个1一步步"沉"到最左端,需走满多趟。教师提问:气泡可以向上浮,石头能不能向下沉?如果一趟从左往右推大值到右端,下一趟从右往左推小值到左端,如何?这就是鸡尾酒排序(双向冒泡)。教师给出代码框架,由学生在小组内讨论补全往返两个方向的边界控制,并复测上述特殊输入,对比单向与双向版本的趟数差异。课堂上只要求读懂思想、跑通演示,代码细节留作课后探究。教师用一张脉络图收束算法家族的视野:冒泡排序(相邻交换、逐趟就位)→优化版冒泡(提前终止)→鸡尾酒排序(双向收缩)→后续将学习的选择排序、插入排序,乃至基于分治的快速排序。强调一个观点:算法的改进往往不是推翻重来,而是盯着"哪里在浪费"做文章——浪费在无效比较,就提前终止;浪费在单向跋涉,就双向往返。设计意图:变形内容点到为止,重在传递"优化来源于对浪费的洞察"这一方法论,把学习胃口引向单元后续,实现一课带一单元。(七)课堂小结与升华(约3分钟)师生共同完成三句话小结:其一,冒泡排序的骨架是"相邻比较、逆序交换、逐趟就位",外层管趟数、内层管范围;其二,n个元素最多走n1趟,蛮力版比较次数为n(n1)/2,数量级平方增长;其三,优化的本质是消除浪费,标志位让算法学会"见好就收"。教师最后回到开课的体检情境:当年医生用纸笔排队,今天我们用36次甚至8次比较完成同样的事——算法思想没有变,变的是我们对效率的追问永不停歇。七、课堂评价设计过程性评价依托三张证据:任务单上的趟数—比较次数表格,考核对趟数规律的理解;任务四中复测对比的三个数字(36、36、8),考核对标志位作用的实证理解;小组互评环节中每组对另一组代码从"正确性、边界规范、有无优化"三个维度打星并写一句评语。诊断性评价针对预判的三类困难设置快检题:一是在缺少临时变量的错误代码上圈出错因;二是给定n=5,写出每趟内层循环的次数序列4、3、2、1;三是判断"提前终止后的冒泡排序在任何输入下比较次数都不超过原版本"这一说法的正误并说明理由。八、分层作业设计基础层:完成排序程序默写,并对列表[54,32,78,21,65]手工模拟每一趟的结果与交换次数。提高层:实现带提前终止的冒泡排序,分别用长度为10、50、100的随机列表、有序列表实测比较次数,绘制一张简单的对比表格并写出一条结论。拓展层:查阅资料完整实现鸡尾酒排序,构造一组使其明显优于单向冒泡的输入数据,下节课用两分钟向全班展示。九、板书设计主板书分四栏:第一栏,一趟冒泡——相邻比较、逆序交换、最大值就位;第二栏,完整算法——外层n1趟、内层n1j次,蛮力比较n(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论