利用数组进行数据查找_折半查找法_C语言程序.doc

利用数组进行数据查找_折半查找法_C语言程序.doc

ID:57727907

大小:15.50 KB

页数:2页

时间:2020-09-02

利用数组进行数据查找_折半查找法_C语言程序.doc_第1页
利用数组进行数据查找_折半查找法_C语言程序.doc_第2页
资源描述:

《利用数组进行数据查找_折半查找法_C语言程序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、适应情况:在一批有序数据中查找某数基本思想:选定这批数中居中间位置的一个数与所查数比较,看是否为所找之数,若不是,利用数据的有序性,可以决定所找的数是在选定数之前还是在之后,从而很快可以将查找范围缩小一半。以同样的方法在选定的区域中进行查找,每次都会将查找范围缩小一半,从而较快地找到目的数例7.10假设在数组a中的数据是按由小到大顺序排列的:-120616235680100110115,从键盘上输入一个数,判定该数是否在数组中,若在,输出所在序号;若不在,输出相应信息。查找过程如下:第一步:设low、mid和high三个变量

2、,分别指示数列中的起始元素、中间元素与最后一个元素位置,其初始值为low=0,high=9,mid=4,判断mid指示的数是否为所求,mid指示的数是23,不是要找的80,须继续进行查找。[-120616235680100110115]↑low↑mid↑high第二步:确定新的查找区间。因为80大于23,所以查找范围可以缩小为23后面的数,新的查找区间为[5680100110115],low,mid,high分别指向新区间的开始、中间与最后一个数。实际上high不变,将low(low=mid+1)指向56,mid(mid=(

3、low+high)/2)指向100,还不是要找的80,仍须继续查找。-12061623[5680100110115]↑low↑mid↑high 第三步:上一步中,所找数80比mid指示的100小,可知新的查找区间为[5680],low不变,mid与high的值作相应修改。mid指示的数为56,还要继续查找。-12061623[5680]100110115↑low↑high↑mid第四步:根据上一步的结果,80大于mid指示的数56,可确定新的查找区间为[80],此时,low与high都指向80,mid亦指向80,即找到了80

4、,到此为止,查找过程完成。-1206162356[80]100110115↑low↑mid↑high若在查找过程中,出现low>high的情况,则说明,序列中没有该数,亦结束查找过程。 程序为:#defineM10#includemain(){staticinta[M]={-12,0,6,16,23,56,80,100,110,115};intn,low,mid,high,found;low=0;high=M-1;found=0;printf("Inputanumbertobesearched:");sca

5、nf("%d",&n);while(low<=high){mid=(low+high)/2;if(n==a[mid]){found=1;break;}/*找到,结束循环*/elseif(n>a[mid])low=mid+1;elsehigh=mid-1;}if(found==1)printf("Theindexof%dis%d",n,mid);elseprintf("Thereisnot%d",n);}输入:80↙输出:Theindexof80is6

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。