对分查找算法复习.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
对分查找算法复习会计学第1页/共17页 对分查找算法一、生活中的对分查找 淘宝网上热卖的终极飞翼擎天柱(猜价格游戏)第2页/共17页游戏规则如下: (1)在给出这个玩具的价格是在100到200之间的整数。 (2)竞猜价格时,先猜100-200之间的中间价格,如果太 小了,就猜150-200之间的中间价格,依此类推… 直到猜对为止。我来试试(我愿意一试)150 "太小"175 "太大"163 "太小"169 "太小"172 "太大"170 "恭喜您猜对了"二、“对分思想,验证奇迹”第3页/共17页1.对分查找的基本思想:(1)前提:被查找的数据序列必须是有序的。(2)基本思想: 在有序的数据序列中(一般放在数组中),首先把查 找的数据与数组中间位置的元素进行比较,若相等, 则查找成功并退出查找;否则,根据数组元素的有序 性,确定数据应在数组的前半部分还是在后半部分查 找;在确定了新的查找范围后,重复进行以上比较, 直到找到或未找到为止。验证奇迹: 对分查找.swf对分查找实际数据演示动画第4页/共17页3. 算法的基本框架: 说明:要查找的数为key,待查找的数存在数组d中。i为查找 范围的起点,j为查找范围的终点,m为范围[ i , j ]的中 间位置,find为查找成功与否的标记,find为true代表 查找成功;find为false代表查找失败。 i=1 j=16 find=false ‘查找的结果,若为true表示找到,若为false表示未找到 do while (i=j) and not find ( 还未查找完且未找到 ) 计算中点的位置m 比较key与d(m), 若key=d(m),则find=true 若keyd(m),则重新调整查找范围i=m+1 [i , j] 若keyd(m),则重新调整查找范围j=m-1 [i , j] Loop 若find为真,表示查找成功,并输出找到的位置m; 若find为假,表示查找失败。开始i=1, j=16,find=flaseN①?YNfind=true?未找到,输出信息②YKey=d(m)?Y找到,输出mfind=trueNKeyd(m)?YN结束④③第5页/共17页4. 对分查找算法的流程图实现:请将①②③④补充完整: ① . ② . ③ . ④ .第6页/共17页三、“琢玉成形,化玉为器”— 转化为程序代码通过上述16个数据中查找key过程,程序代码如下:i=1 : j=16 : find=falseDo while (i=j) and not find‘如果还未找完并且未找到 m=(i+j)\2‘计算中间点位置 if key=d(m) then find=true‘表示查找到的情况 elseif keyd(m) then‘表示待查数据比中间位置上的数大时 i=m+1‘重新调整查找范围的起始位置 i=m+1 else‘表示待查数据比中间位置上的数小时 j=m-1‘ 重新调整查找范围的终点位置 j=m-1 end ifLoopIf find then‘判断查找的结果,若为true表示找到,若为false表示未找到 label1.caption= 找到!该数在数组中的位置为: + Str(m)else label1.caption= 未找到!该数在数组中不存在!“end if第7页/共17页通过上述16个数据中查找key的过程,推广至n个数据中查找: i=1 : j=n : find=false Do while (i=j) and not find m=(i+j)\2( m=int((i+j)/2 )或 m=fix((i+j)/2) ) if key=d(m) then find=true elseif keyd(m) then i=m+1 else j=m-1 end if Loop If find then label1.caption= 找到!该数在数组中的位置为: + Str(m) else label1.caption= 未找到!该数在数组中不存在!“ end if第8页/共17页四、“体验之旅,感受程序魅力”打开[上机实践]文件夹中的“对分查找.vpb”文件,将窗体中“对分查找”按钮事件过程( Command3_Click() )中的代码补充完整。(注:带红色?处)并调试程序使之运行成功。第9页/共17页五、“思想升华,化茧成蝶”1. 对分查找算法中被查找数据是降序的情况程序该如何修改? i=1 : j=n : find=false Do while i=j and not find m=(i+j)\2( m=int((i+j)/2) 或 m=fix((i+j)/2) ) if key=d(m) then find=t

文档评论(0)

kuailelaifenxian + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体太仓市沙溪镇牛文库商务信息咨询服务部
IP属地上海
统一社会信用代码/组织机构代码
92320585MA1WRHUU8N

1亿VIP精品文档

相关文档