欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    折半查找算法及程序实现教案[教资类别].doc

    • 资源ID:9712729       资源大小:71.50KB        全文页数:8页
    • 资源格式: DOC        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    折半查找算法及程序实现教案[教资类别].doc

    折半查找算法及程序实现一、教材分析教学重点:以图示法方式,演示折半查找算法的基本思想。教学难点:由折半查找算法的思想到程序代码编写的转换,尤其是其中关键性语句的编写是教学中的难点。二、学情分析学生应该已经掌握程序设计的基本思想,掌握赋值语句、选择语句、循环语句的基本用法和VB基本操作,这节课学生可能会遇到的最大问题是:如何归纳总结对分查找解决不同情况问题的一般规律,鉴于此,在教学中要积极引导学生采取分解动作、比较迁移等学习策略。三、教学目标知识与技能:理解对分查找的概念和特点,通过分步解析获取对分查找的解题结构,初步掌握对分查找算法的程序实现。过程与方法:通过分析多种不同的可能情况,逐步归纳对分查找的基本思想和方法,确定解题步骤。情感态度与价值观:通过实践体验科学解题的重要性,增强效率意识和全局观念,感受对分查找算法的魅力,养成始终坚持、不断积累才能获得成功的意志品质。四、教学策略与手段1、教学线索:游戏引领-提出对分查找原理- 解析对分查找的算法特征-实践解决问题。2、学习线索:分解问题-归纳问题-实践提升,在三个阶段的不断推进中明确对分查找算法,总结规律。五、教学过程1、新课导入(1)热身:游戏(2分钟)找同学上来找一本上千页电话册里面的一个名字。(课程导入我写的不是很详细,自己设计哦)(2)教师引导:所以我不希望只有他一个人体验这种方便,我们教室里还有一大帮人,其实这种什么不止用于查找电话铺,还可以运用到实际生活中,教室里有这么多人,坦白说,按学校的老方法一个人一个人的数,对所有老师来说都及其费力,那我们想想,是不是数数2368,这样好点对吗?。不要小看这种想法,他其实是非常棒的,他能把解决问题的时间缩短一半,因此我们提出了这种算法2、新课:首先我们一起来看一看折半查询算法中的“折半”的含义。师:何为折半呢?生:减半;打一半的折扣。例如,我手里拿着一根绳子,现在我们来进行折半试验,首先拿住绳子的两个端点,然后从中点的位置进行对折,这样绳子就缩短为原来长度一半,然后将一半的绳子继续执行与刚才相同的操作,使得绳子的长度逐渐的缩短,直到绳子长度短得不能再进行折半了。师:那什么时候就不能再折半了呢?生:即绳子的两个端点合二为一为止。折半查找算法的思想与绳子折半的过程基本相同。下面我们先通过图示来看看折半查找算法究竟是什么?教学步骤二:分解对分查找算法(5分钟)假设一个从小到大排列的数据存放在一个数组中Data(10),而查找数据存放在变量x中。如图1所示,橙色方框的代表的是查询数据x,每个浅兰色方框代表的是数组中的每个元素,框内显示的数据是每个数组元素对应的下标(序号),整排的浅兰色方框就可以看成整个数组,即待查数据表(数组元素表)。x012345678910LowHigh图一第一步:就像抓住绳子的两端一样,首先设立两个标记Low、High分别来标识查询区间的低端和高端,即数组元素的下标,如图1所示。师:对于初始查询区间,它们是多少呢?生:Low=0 , High=10第二步:取区间的中点标记Mid,如图2所示。师:查询区间的中点为多少?(这个地方,有的学生可能直接说出下标值,所以要提醒学生让中点和两个端点相联系,即用端点表示中点)生:Mid=(Low+High)/2师:中点位置上的数据为什么?(提醒学生数据是放在数组Data中的) 生:Data( Mid) 012345678910MidLowHigh第三步:判断中点位置上的数据Data( Mid)与要查找数x是否相等,如何相等,则找到,并结束查找;如果不相等,就执行第四步。师:这个判断语句如何写呢?生:if Data( Mid)=x thenprint “x找到”结束查找end if第四步:如果不相等,那么对查询区间进行折半操作。师:那如何折半是从中点处向左侧折半还是向右侧折半?(这是整个折半查询进行下去的关键所在,所以一定要让学生自己学会判断)由于待找数据表是从小到大排列的,而且区间中点位置上的数据Date(Mid)也知道,所以,通过Data(Mid)与x的比较,看一看,x比Data(Mid)大还是小,就可以判断出x落在中间数Data(Mid)的左侧还是右侧,从而判断出向左还是向右折半。师:那么,判断语句如何写呢?生:if Data(Mid)<x then说明x比Data(Mid)大,且数据表是从小到大排列的,从而判断出x落在右侧。所以从中点处向右侧折半。师:如图3所示,观察新查询区间,发现高端标记没有变化,而低端标记变了,那低端标记Low为多少呢?生:我们来看图2,由于中点位置上的数据已经被查询过,所以,新查询区间内的数据就不能再包含它,Low就得比Mid多1,即:Low=Mid+1。012345678910LowHighelse说明x比Data(Mid)小,所以就向左侧折半,如图4所示,观察新区间,发现低端标记没有变化,而高端标记变了,同样道理,新查询区间内不能包含Mid对应的数据,所有High比Mid小1,即:High=Mid1end if第五步:重复执行第二、三、四步骤。师:如果一直没有找到,那么什么时候不再进行折半查找呢?(提示学生想一想绳子折半的情况)生:直至Low>High,停止折半查询。012345678910LowHigh教学步骤四:对各种情况进行归纳总结。(1)x与data(mid)的大小比较影响i,j的取值的规律:i的取值规律:if data(mid)<x then low=mid+1j的取值规律:if data(mid)>x then high=mid-1用分支结构实现。(2)继续进行重复查找的条件: lowhigh,用循环结构实现。教学步骤五:构建对分查找的流程图教学步骤六:对分查找算法的初步程序实现。YYN开始low1,high10计算middata(mid)=x?Nlowmid+1highmid-1N继续查?输出“未找到”Y输出找到的信息结束lowhighmid=(low+high)2 data(mid)<x?教师事先设计好Vb窗体,学生只需要在相应的程序体输入代表算法思想的关键语句。附主要程序体:Private Sub Command2_Click()Dim x As Integer, mid As Integer, low As Integer, high As Integerx = Val(Text1.Text)low = 0: high = 10Do While low <= highmid = (low + high) 2If data(mid) = x ThenText2.Text = "找到了,是第" & mid & "个"Exit SubEnd IfIf data(mid) < x Thenlow = mid + 1Elsehigh = mid - 1End IfLoopText2.Text = "找不到"End Sub程序说明:1、获得要查找的数据x的值 x = Val(Text1.Text)2、i,j赋初值。 low = 1: high = 103、求mid的值。mid = (low + high) 24、分三种情况,(1)如果x=data(mid),则如果 data(mid) = x 那么Text2.Text = "找到了,在第" + Str(mid) + "个"。(2)如果x>data(mid),那么low=mid+1 否则 high=mid+15、重复上述的3,4步,直到low超出j(或者理解为low<=high不成立,所以不能用for next,而要用do while语句)6、如果有找到x,那执行第4步(1)步后应该输出找到的位置后退出程序,如果不退出,说明x没有找到,所以在相应位置要输出“找不到”。折半查找算法基本思想总结(2分钟)对一有序数据表,首先从初始查找区间开始,取出区间中点位置上的数据与要查询数据进行比较,若相等,则查找成功,并结束查询;否则,将当前查找区间缩小一半。在新的查询区间内,同样取出区间中点位置上的数据与要查询数据进行比较,若相等,则查询成功,并结束查询,否则将新的查询区间再次缩小一半。然后继续采用相同的方法,直到查找数据成功或者查询区间不能再折半(即查询失败)为止教学步骤七:评价。评价学生的程序实现情况,并讨论或实践问题:如果是降序序列,该怎么样改动程序?如果序列元素不是10个,而是100个或更多呢?教学步骤八:总结提升。(1)由于对分查找过程中的每次比较都能使得搜索空间减半,对分查找将不会使用超过log2n次比较来找到目标值。(2)提升对分查找算法的实际意义:同学们可能还没有意识到二分查找是多么高效,那不妨设想一下在一个包含一百万个人名的电话簿中找一个名字,二分查找可以让你不超过21次就能找到指定的名字。如果你能够将世界上所有的人按照姓名排序,那么你可以在35步以内找到任何人。八、作业:1、以下的三组元素序列能采用对分查找法来查找吗?(1) 19,33,35,53,56,67,78,99 (2)53,35,67,78,56,99,33,19(3)99,67,56,45,33,10,9,1,0,-92、设计一个能用对分查找算法思想解决的实际问题。8教学d

    注意事项

    本文(折半查找算法及程序实现教案[教资类别].doc)为本站会员(rrsccc)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开