对分查找

上传人:liu****han 文档编号:243800895 上传时间:2024-09-30 格式:PPT 页数:13 大小:879.70KB
返回 下载 相关 举报
对分查找_第1页
第1页 / 共13页
对分查找_第2页
第2页 / 共13页
对分查找_第3页
第3页 / 共13页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2018/5/29,#,对分查找(有序数组),对分查找的基本思想:首先将查找键与有序数组内处于中间位置的元素进行比较,如果中间位置上的元素数值与查找键相同,表示找到,否则根据数组元素的有序性,就可确定应该在数组的前半部分还是后半部分继续进行查找。在新确定的范围内,继续按上述方法进行查找,直到获得最终结果。,对,分查找是一种效率很高的查找方法,但被查找的,数据必须是有序的,。,若用一个数组,d(1),到,d(11),来存放升序的元素序列,查找键,Key,为,12,6,12,15,18,22,25,28,35,46,58,60,1,2,3,4,5,6,7,8,9,10,11,i,j,mid,Mid=(i+j)2,Keyd(mid),j=mid-1,若用一个数组,d(1),到,d(11),来存放升序的元素序列,查找键,Key,为,12,6,12,15,18,22,25,28,35,46,58,60,1,2,3,4,5,6,7,8,9,10,11,i,j,mid,Mid=(i+j)2,Keyd(mid),i=mid+1,若用一个数组,d(1),到,d(11),来存放升序的元素序列,查找键,Key,为,12,6,12,15,18,22,25,28,35,46,58,60,1,2,3,4,5,6,7,8,9,10,11,i,j,mid,Mid=(i+j)2,Key=d(mid),输出:,Mid=2,若用一个数组,d(1),到,d(11),来存放升序的元素序列,查找键,Key,为,12,6,12,15,18,22,25,28,35,46,58,60,6,12,15,18,22,25,28,35,46,58,60,6,12,15,18,22,25,28,35,46,58,60,6,12,15,18,22,25,28,35,46,58,60,6,12,15,18,22,25,28,35,46,58,60,1,2,3,4,5,6,7,8,9,10,11,i,j,i,j,min,j,i,min,i,j,min,i,j,min,对,分查找算法程序实现,对分查找的程序结构(以查找升序序列为例),如果区间未空,那么继续执行循环体(,一般用,do while,循环实现,),循环尾,取中点,的,下标,如果中点就是目标,那么退出循环,如果目标小于中点,那么进入左半区间,否则进入右半区间,6,12,15,18,22,25,28,35,46,58,60,j,mid,i,Do while i=j,loop,m=fix(i+j)/2),If d(m)=key then,exit do,End if,If keyd(m)then,Else,End if,If xb0 then,text1.text=str(xb),Else,text1.text=“,没有找到,”,End if,i=1:j=10,Xb=0,j=m-1,i=m+1,xb=m,对分查找算法变,式,key=val(Text1.text,),i,=1:j=n:c=0:found=False,found=False,表示还未找到,Do,While i=j and,found=False,found=False,也可以写成,not found,m=(i+j)2,取中间位置,c=c+1,If a(m)=key Then,found=True,找到后,改变标记,变量,ElseIf key a(m)Then,j=m,1,前半段找,Else,i =m+1,后半段找,End If,Loop,If,found=True,then Text2.Text=Str(m)Else Text2.Text=,找不到,If found=True,等价于,If found,Text3.Text=,共查找了,+Str(c)+,次,顺序查找和对分查找比较,顺序查找不要求数组有序,效率较低,平均需要,(n+1)/2,次。,对分查找要求数组有序,效率较高,最多需要,int(log,2,n)+1,次。,顺序查找可以用,For,语句或,Do,语句来写,对分查找只能,用,Do,语句来写,P63,例,2,text1,labe2,labe3,X=val(text1.text),i=1:j=50:k=0:f=false,Do while(i=j)and not f,k=k+1,计算出中间位置,If x=a(m)then,f=true,Elseif xa(m)then,else,i=m+1,End if,Loop,If f then,label2.caption=“,此账号余额为,”+str(b(m)+,“,元,”,label3.caption=“,共查找,”+,+“,次,”,Else,label2.caption=“,找不到此账号,请重新输入,”,End if,End sub,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!