编写用户自定义过程实现功能:用折半查找法查找数组中的某个元素,找到元素,过程返回该元素的下标,找不到

编写用户自定义过程实现功能:用折半查找法查找数组中的某个元素,找到元素,过程返回该元素的下标,找不到则返回-1。... 编写用户自定义过程实现功能:用折半查找法查找数组中的某个元素,找到元素,过程返回该元素的下标,找不到则返回-1。 展开
 我来答
林易木创建者
推荐于2018-04-27 · TA获得超过189个赞
知道答主
回答量:31
采纳率:0%
帮助的人:24.8万
展开全部
这是给你的查考程序,方法很多,需要自己琢磨,希望对你有帮助:
//折半查找法
#include <stdio.h>
void main()
{
int a[100],i,num,m,n,c=0; //定义a数组为100个元素,令c的初始值为0.
m=0; //m为最小下标
n=99; //n为最大下标
for (i=0;i<100;i++)
{
a[i]=3*i;
printf("%d\t",a[i]); //给数组赋值并输出
}
printf("Input the number which you want to find:");
scanf("%d",&num); //输入要查找的数
for(i=0;;i++)
{

if(num==a[99])
{
c=99;break; //如果num是最后一个这输出为第99个
}
if((n==m+1||m==n)&&num!=a[(n-m)/2+m]) //num不是数组a的数,则跳出循环
{
break;
}
if(num>a[(n-m)/2+m])
{
m=(n-m)/2+m;continue; //如果num大于中间的数,则然数组下标m=中间数的下标
}
if(num<a[(n-m)/2+m])
{

n=(n-m)/2+m;continue; //如果num小于中间的数,则然数组下标n=中间数的下标
}

if(num==a[(n-m)/2+m])
{
c=(n-m)/2+m;break; //如果num等于中间的数,则跳出循环

}
}
if(c==0)
printf("-1\n");
else printf("%d is a[%d] numble!\n",num,c); //输出值
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式