C语言如何用二分法查找一个数.我要一个例题

给我提供个代码参考.谢啦.看了下面两位高手的代码还是有点不懂.小弟我现在才学到循环,好象你们用的都是函数和结构的语句,而且只有其中的一部分.能不能再详细点.我只记得讲算法... 给我提供个代码参考.谢啦.
看了下面两位高手的代码还是有点不懂.小弟我现在才学到循环,好象你们用的都是函数和结构的语句,而且只有其中的一部分.能不能再详细点.我只记得讲算法里面有说过二分法查找.现在学循环都是一个个查找的,听说效率很低.
展开
 我来答
百度网友6ba8b63cb
推荐于2018-02-23 · TA获得超过232个赞
知道小有建树答主
回答量:98
采纳率:0%
帮助的人:120万
展开全部
//二分法查找一个数,原数列必须是有序的,
//有个问题,当数列中有相同的数怎么处理,也就是只找到其中一个

void binsrch( int m[N],int k){
int low,high,mid;
low=0;high=N-1;
while (low<=high){
mid=(low+high)/2;
if (k>m[mid])
high=mid-1;
if (k<m[mid])
low=mid+1;
if (k==m[mid]){
printf("找到此数在数组的%d位,值为%d",mid+1,k);
return;
}

}
printf("没有找到此数,非常报歉");
return;

}
育知同创教育
2016-01-26 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
二分法查找一个数,原数列必须是有序的,
注意,当数列中有相同的数怎么处理,也就是只找到其中一个
void binsrch( int m[N],int k){
int low,high,mid;
low=0;high=N-1;
while (low<=high){
mid=(low+high)/2; //2分法的运用
if (k>m[mid])
high=mid-1;
if (k<m[mid])
low=mid+1;
if (k==m[mid]){
printf("找到此数在数组的%d位,值为%d",mid+1,k);
return 0;
}

}
printf("没有找到此数,非常报歉");
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
幸福的小雨666
2006-07-03 · 超过28用户采纳过TA的回答
知道答主
回答量:157
采纳率:0%
帮助的人:94.6万
展开全部
二楼的好像正确,一楼的不对
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Ericlee0532
2006-07-03 · TA获得超过460个赞
知道小有建树答主
回答量:613
采纳率:0%
帮助的人:660万
展开全部
int binarysearch(int a[],int x,int n)
{
int left,right,middle;
left=0;
right=n-1;
while(left<=right)
{
middle=(left+right)/2;
if(x==a[middle])
return middle;
if(x>a[middle])
left=middle+1;
else right=middle-1;
}
return -1;
}

我记得书上好像有这个例子吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式