C语言:怎样用二分法找出最接近又不大于的一个数

intbinarysearch1(RNoder[],intn,intk)/*二分法查找*/{inti,j,m;i=0;j=n-1;while(i<=j){m=(i+j)/... int binarysearch1(RNode r[],int n,int k)/*二分法查找*/
{
int i,j,m;
i=0;j=n-1;
while(i<=j)
{m=(i+j)/2;
if(k==r[m].key]) return(m);
else if(k<r[m].key) j=m-1;
else i=m+1;
}
return(-1);
}
该怎样修改,使它返回一个最接近又不大于所查找的数的位置值(数组中可能没有要查找的数)
展开
 我来答
qyjubriskxp
2010-02-16 · TA获得超过892个赞
知道小有建树答主
回答量:735
采纳率:0%
帮助的人:750万
展开全部
为了方便调试,我把数据类型改了,你自己改回来吧,还有我没加超出边界的判断
#include <stdio.h>
int r[10]={2,4,6,8,10,12,14,16,18,21};
int binarysearch1(int n,int k)
{
int i,j,m;
i=0;j=n-1;
while(i<j)
{m=(i+j)/2+1;
if(k==r[m])return(m);
else if(k<r[m]) j=m-1;
else i=m;
}
return(i);
}
int main()
{
int i;
for(i=3;i<=21;i++)printf("%d\t",binarysearch1(10,i));
return(0);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式