《2.4 查找》课件高中信息技术浙教版选修1 算法与程序设计.pptx

《2.4 查找》课件高中信息技术浙教版选修1 算法与程序设计.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
对分查找基本思想 首先将要查找的数据与有序数列内处于中间位置的数据进行比较,如果两者相等,则查找成功;否则就根据数据的有序性,再确定该数据的范围应该在数列的前半部分还是后半部分;在新确定的缩小范围内,继续按照上述方法查找,直到找到要查找的数据,即查找成功,如果要查找的数据不存在,即查找不成功对分查找的原理和方法 (1)对分查找是效率很高的查找方法,但被查找的数据必须是有序的。降序或者升序(2)首先将查找的数与有序数组内处于中间位置的数据比较,如果中间 位置上的数与查找的数不同,根据有序性,就可确定应该在数组的前半部分还是后半部分继续查找。(3)在新确定的范围内,继续按上述方法进行查找,直到获得最终结果。找一找利用对分查找数字37的过程是怎样的?d(1)d(2)d(3)d(4)d(5)d(6)d(7)d(8)d(9)d(10)d(11)d(12)d(13)d(14)d(15)101820232832374553586167768495101820232832374553586167768495101820232832374553586167768495101820232832374553586167768495101820232832374553586167768495想一想 数列的个数为奇数的时候,中间数比较好找,如果为偶数又该如何?找一找利用对分查找数字37的过程是怎样的?d(1)d(2)d(3)d(4)d(5)d(6)d(7)d(8)1018202328323745101820232832374510182023283237451018202328323745练一练 7个学生的身高从高到低分别是:178,177,175,172,170,165,162.用对分查找法找到178的过程中,依次被访问到的数据是( ) A.178 B.172,175,178 C.172,177,178 D.172,175,177,178 某网站报名参加免费三亚游的会员序列号有:101,135,238,342,450,558,633,708,846,910。采用对分查找,查找序列号为846号网友信息的过程中,依次被访问到的序列号是( ) A.450,708,846 B.450,708,910,846C.558,708,846 D.558,708,910,846升一升说明: 1、d(1 to 11)数组来存放一组升序序列数据2、i表示查找范围的第一个数组元素的下标3、j表示最后一个数组元素的下标4、m表示中间位置元素的下标5、key保存要查找的数d(1)6← id(2)12d(3)15d(4)18d(5)22d(6)25←m=fix((i+j)/2)d(7)28d(8)35d(9)46d(10)58d(11)60← j情况一:要找的值在后半部分;如要查找数key=58① 第一次查找 d(1)---d(11) key=58则i=1; j=11; m=fix((1+11)/2)(m=6)d(1)6← id(2)12d(3)15d(4)18d(5)22d(6)25←m=fix((i+j)/2)d(7)28d(8)35d(9)46d(10)58d(11)60← jkeyd(m) 说明key在后半部分;i=m+1 (i=7); j不变②第二次查找d(7)---d(11); key=58i=7;j=11;m=fix((7+11)/2)(m=9)d(1)6d(2)12d(3)15d(4)18d(5)22d(6)25d(7)28d(8)35d(9)46d(10)58d(11)60← i←m=fix((i+j)/2)← jkeyd(m) 说明key在后半部分;i=m+1(i=10); j不变③第三次查找d(10)---d(11) key=58i=10;j=11;m=fix((10+11)/2) ( m=10) d(1)6d(2)12d(3)15d(4)18d(5)22d(6)25d(7)28d(8)35d(9)46d(10)58d(11)60← i←m← jkey=d(m) 说明找到了总结一:如果keyd(m) ,新查找的范围为下半部分, j值不变,i=m+1情况二:要找的值在前半部分;如要查找数12① 第一次查找d(1)---d(11) key=12i=1;j=11;m=fix((1+11)/2)=6; ← i←m=fix((i+j)/2)← jd(1)6d(2)12d(3)15d(4)18d(5)22d(6)25d(7)28d(8)35d(9)46d(10)58d(11)60keyd(m) 说明key在前半部分;j=m-1 (j=5);i不变②第二次

您可能关注的文档

文档评论(0)

xingyuxiaxiang + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档