版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高中二年级信息技术浙教版选必1数据与数据结构教学设计:查找算法的程序实现一、教学设计理念与课程定位本节课选自浙教版高中信息技术选择性必修1《数据与数据结构》第五章,主题为查找算法的程序实现。查找是数据处理中最基础、最频繁的操作之一,顺序查找与二分查找是两种典型的查找策略。学生此前已掌握Python基本语法、列表结构、循环与分支语句,为算法实现奠定了语言基础。本节课的任务不是教会学生背代码,而是让学生经历"问题—模型—算法—程序—验证"的完整过程,理解"算法选择依赖于数据特征与问题规模"这一核心思想。教学设计遵循计算思维培养的主线:从真实情境抽象出问题,通过对比实验感受算法效率差异,借助表格推演与代码调试验证算法的正确性,最终形成可迁移的程序设计经验。课堂组织采用"情境引入—任务驱动—合作探究—总结提升"的结构,教师退居组织者与引导者位置,把操作权和表达权交还给学生。二、教材分析与学情诊断本节教材以"从扑克牌中找牌"的游戏切入,先介绍顺序查找的思想,再引出在已排序数据上使用二分查找的必要性,最后给出两种算法的Python实现。教材编排体现了"由直观到抽象、由低效到高效"的认知规律,但对二分查找边界条件的处理(left、right、mid的更新规则)讲解较略,这正是学生易错点,需要教师在教学中予以强化。学生方面存在三类典型问题:其一,能读懂代码但独立编写时逻辑断点多,尤其是while循环的终止条件容易写成left<right或mid计算出现死循环;其二,对"时间复杂度"只有模糊感觉,缺乏用数据说话的意识;其三,部分学生把程序调试寄托在反复试跑上,缺少用纸笔推演、断点追踪的科学方法。因此本节课设置"推演单"作为学习支架,要求学生在编码前先手写三轮二分查找的指针移动过程。三、教学目标1.信息意识与数字化学习:能识别生活与学习场景中的查找问题,如学籍检索、词典查询、题库匹配等,体会算法效率对程序可用性的影响。2.计算思维:理解顺序查找与二分查找的适用条件,能用流程图或自然语言描述二分查找过程,掌握区间缩小的不变量思想。3.程序实现能力:能独立编写两种查找算法的Python函数,能通过构造边界测试数据(目标在首位、末位、不存在)验证程序正确性。4.学习态度与责任:在调试失败中养成耐心推演的习惯,在小组协作中学会清晰表达算法思路,形成"先想清、再动手"的工程习惯。教学重点:二分查找算法的程序实现与边界条件分析。教学难点:循环不变量left≤right的维持,以及mid更新后left与right赋值方向的理解。四、教学准备教师准备:机房环境安装Python3.x,教学广播软件,纸质"二分查找推演单"(印有含11个有序整数的数轴和三轮推演表格),演示用扑克牌一副(同花色1到K共13张),计时脚本time_test.py。学生准备:复习列表索引、range函数、while循环用法;预习教材5.4节并完成课前导学单中的三个小问题:什么是查找关键字;列表中有序与无序的区别;猜数字游戏中猜中100以内整数最多需要猜几次。五、教学过程(一)情境导入:一场有代价的猜牌游戏(6分钟)上课铃响,教师拿出一副扑克牌,抽出红桃A到K共13张,背面朝上打乱排在桌上,请一名学生上台:我指定一张牌,你每次只能翻开一张,翻错扣一分,看需要几次找到。学生实际操作,平均需要五六次。教师追问:如果允许我先告诉你牌是按从小到大的顺序排列的,你准备几张几张地翻?学生立刻意识到可以从中间翻起。第二名学生上台演示,三次之内必然命中。教师板书两组数字:无序时最坏翻13张,有序时最多4张。提问:同样是找一张牌,差别在哪里?学生回答后教师点题:查找的效率取决于我们如何利用数据中的信息。计算机世界中,一次查找省下的可能是一次磁盘读取或一次网络请求,规模放大到百万级、亿级时,算法选择就决定了系统能不能用。这节课我们用程序把这两种策略写清楚、跑明白、比出来。(二)任务一:顺序查找的程序实现(10分钟)教师给定数据文件students.txt片段,内含全班50名学生的学号与姓名。任务:编写函数seq_search(data,key),在列表data中查找学号key,找到返回下标,找不到返回1。学生独立编码约四分钟。教师巡视,关注三种典型写法:foriinrange(len(data))逐项比较;直接用data.index(key)(提醒这是调用内置方法,本节课要求自己实现底层逻辑);用keyindata判断(只能回答是否存在,不能定位下标)。展示一份规范的参考实现:defseq_search(data,key):foriinrange(len(data)):ifdata[i]==key:returnireturn1教师强调两点。第一,return1的位置:必须放在循环体之外,表示"全部比较完仍没找到",不少学生误放在else分支里导致只检查第一个元素。第二,函数同时承担"是否存在"与"在什么位置"两个职责,1作为哨兵值是程序设计中的常用约定。随堂快测:调用seq_search查找学号为20240101与20249999的学生,观察输出。学生确认前者返回0,后者返回1,程序正确。(三)任务二:构建百万级数据的效率冲突(8分钟)教师发问:50个数据,顺序查找眨眼就跑完了,那如果是一个省的考生信息,一百万条呢?分发计时脚本time_test.py,脚本生成0到999999的有序列表,分别用顺序查找在满列表和前半区查找目标值"750000",并用time模块统计耗时。学生运行脚本,屏幕上出现约0.05秒的结果,感觉并不慢。教师再改参数:连续查找一万个随机存在的学号、一万个随机不存在的学号。这次运行耗时明显拉长,约数十秒。教室出现第一波讨论。教师引导归纳:顺序查找平均要扫过一半数据,找不到时必须扫完全部数据。查找次数记为n,比较次数与n成正比,记为O(n)量级。当n很大且查找频繁时,积累的时间成本无法接受。那如果数据有序,我们能不能像猜牌那样每次都扔掉一半?这引出了本节课的主角。(四)任务三:二分查找的推演与建模(14分钟)教师发放推演单,上面印着含11个元素的有序列表:a=[3,8,12,19,25,31,40,55,68,79,90],下标0到10。要求以小组为单位完成三轮推演:第一轮,查找31。填表记录每一轮的left、right、mid及a[mid]的比较结果。学生在争议中统一结论:mid=(left+right)//2,第一轮left=0、right=10、mid=5,a[5]=31,恰好命中,查找结束。第二轮,查找68。推演:mid=5时a[5]=31小于68,目标在右半区,left更新为mid+1即6;第二轮mid为(6+10)//2=8,a[8]=68命中。教师追问:left为什么更新为mid+1而不是mid?学生讨论后明确:a[mid]已被排除,新区间不应再包含它,否则可能出现死循环。第三轮,查找65(不存在的元素)。推演到left=8、right=7时区间为空,循环终止,返回1。教师在此点出贯穿全课的invariant:只要left≤right,搜索区间就非空;一旦left>right,目标必不存在。这个判断既是循环条件,也是正确性的保证。小组代表到讲台前用数轴演示三轮过程,教师用红笔标出区间不断折半的轨迹:11→5→2→1。板书结论:每轮比较排除一半候选,11个元素最多4次比较,100万元素最多约20次,因为2的20次方约等于1048576。(五)任务四:二分查找的编码攻坚(16分钟)学生根据推演单独立编写binary_search(a,key)。教师给出接口约定与伪代码骨架:defbinary_search(a,key):left=0right=len(a)1在此补全循环体return1编码约八分钟。教师巡机并收集三类典型错误,稍后集中讲评:错误一,right初始化为len(a)而非len(a)1,导致越界访问或边界判断混乱。讲评时强调right是"最后合法下标"而非"元素个数",区间采用闭区间[left,right]约定。错误二,循环条件写成left<right,导致目标恰好在最后一次收缩的位置时漏检。用单元素列表a=[5]、key=5现场演示:whileleft<right根本不进入循环,直接返回1,把正确数据判成不存在。学生直观看到后果后记忆深刻。错误三,left更新写成left=mid或right=mid,拿a=[3,8,12]查找8演示死循环,CPU占用飙升,学生自行按下Ctrl+C终止,全场莞尔。展示一份公认的正确实现并逐行解读:defbinary_search(a,key):left=0right=len(a)1whileleft<=right:mid=(left+right)//2ifa[mid]==key:returnmidelifa[mid]<key:left=mid+1else:right=mid1return1教师补充两个工程细节。其一,mid计算在部分语言中需写成left+(rightleft)//2以防止整数溢出,Python整数无此问题但理解原理有益。其二,函数要求输入a必须有序,这是二分查找的"契约",调用方若传入无序数据,结果不可预期,可在注释中写明前置条件。(六)任务五:算法擂台赛——用数据说话(8分钟)小组挑战:在time_test.py基础上补全对比实验,列表长度取10万,分别查找"存在且靠近末尾"与"不存在"两类目标各一千次,记录两种算法的总耗时并填入对比表。各组提交结果后,教师汇总到投屏表格:顺序查找平均耗时约为二分查找的数百倍至上千倍。学生自己算出的数字最有说服力。教师顺势引出量级记法:顺序查找为O(n),二分查找为O(logn),n从10万扩大到1000万时,顺序查找工作量扩大100倍,而二分查找只多比较两三次。log曲线的平缓正是二分查找威力的数学根源。教师抛出思辨题:二分查找这么快,为什么不把所有数据都排序使用?学生结合生活经验讨论,教师总结成本权衡:排序本身有开销,若数据频繁增删、查找稀少,维持有序得不偿失;现实中数据库正是通过索引结构在写与读之间取得平衡。这一环节把算法选择从"谁快谁慢"提升到"代价与收益"的系统观层面。(七)课堂小结与分层作业(3分钟)师生共同完成口头小结,教师用三句话收束:顺序查找不看数据长相,逐个比,简单可靠但线性耗时;二分查找利用有序性每轮折半,对数级效率,但边界条件必须精确;选择算法前先看数据规模与数据特征,程序的正确性用边界测试来背书。分层作业。基础层:完成教材课后习题,手写二分查找查找54在有序数组[7,18,29,34,46,54,63,77]中的三轮推演表。提高层:改造binary_search,要求列表中存在重复关键字时返回其第一次出现的下标,并自编测试数据验证。拓展层:查阅资料了解Python标准库bisect模块,比较其insert功能与本节课二分查找的联系,下节课两分钟微报告。六、板书设计主板书分左右两栏。左栏标题"顺序查找":核心思想为逐元素比较,复杂度O(n),循环骨架foriinrange(len(a)),返回1作为哨兵。右栏标题"二分查找":前提为有序,三要素left、right、mid,更新规则left=mid+1、right=mid1,循环条件left<=right,复杂度
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026事业单位笔试-江西-江西超声医学(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-山东-山东整形外科(医疗招聘)历年参考题库含答案详解
- 储能电站双重预防机制建设报告模板(风险分级管控 + 隐患排查治理)
- 2026年汽车电子技术操作模拟试题
- 2026年全国初级银行从业资格之初级个人贷款考试培优拓展题附答案
- 2026年软考初级信息系统运行管理员综合真题(附答案)及解析
- 2026年小学数学毕业升学专项突破测试卷
- 2026年新广西水利安全员b证试题及答案
- 2026年执业医师考试中医基础理论模拟试卷与解析
- 实验室仪器期间核查实施方案
- 2026年秋季学期学校教学质量提升专项行动方案:落实六环贯通、三级联动、四单闭环,将教学质量沉淀于日常
- 2025年食品安全总监、食品安全员考核考试试题库及答案
- 甲状腺癌诊疗指南解读 课件
- 2026年公路弃土场规划及生态恢复方案
- 2026年少先队常识认知试题含答案
- 2026年国家网络安全宣传周试题及答案
- 2025 版中国脓毒症与感染性休克院前急救指南
- 《热爱班集体》分层作业及答案-2026-2027学年统编版(新教材)小学道德与法治四年级上册
- 物业公共收益管理制度
- 2025年贵州省六盘水市事业单位遴选笔试真题及参考答案
- 马工程西方经济学(第二版)教学课件-5
评论
0/150
提交评论