请教一个数组的问题

已知不重复且已经按从小到大排好的m个数组A[1,m](为简单起见还设m=2^k,k是一个确定的非负整数)对于给定的整数c,要求寻找一个下标i,使得A[i]=c,若找不到,... 已知不重复且已经按从小到大排好的m个数组A[1,m] (为简单起见 还设m=2^k, k是一个确定的非负整数) 对于给定的整数c ,要求寻找一个下标 i ,使得A[i]=c,若找不到,则返回一个0.(两种算法)
在线等,谢谢!!!!
展开
笃侠6A
2011-11-10 · TA获得超过3734个赞
知道大有可为答主
回答量:3205
采纳率:75%
帮助的人:3246万
展开全部
算法1:对分查找
算法思想是:
每次总是将要查找的数据与待查找区间的中间位置元素进行比较,若相等,则已经找到;若大于中间元素,则下一步在右半段继续查找;若小于中间元素,则下一步在左半段继续查找。
据此,可设计出如下操作步骤:
step1. l=1; r=m;found=0;
step2. n=(l+r)/2; //中间位置
step3. 如果“还未找到”并且“还有待查找区间”,则执行下面操作:否则转step4
如果c=a[n],则found=1; 即找到,转step4
如果c>a[n],则l=n+1,转到step2
如果c<a[n],则r=n-1,转到step2
step4.如果found=1,则返回n,否则返回0。

算法2:顺序查找
这比较简单:
下操作步骤:
step1. 对于i=1,2,3,...,m执行如下操作
如果c=a[n], 则跳出循环,即:转step2
step2.如果i<=m, 则返回i,否则返回0。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式