二分查找法 c语言程序设计?

 我来答
lyqpido
推荐于2017-09-24 · TA获得超过150个赞
知道答主
回答量:80
采纳率:0%
帮助的人:0
展开全部
我给你一个例子:
#include<stdio.h>
#define N 10
main()
{
int k,i;
int table[N]={0,2,4,6,8,10,12,14,16,18};
int mid,left=0,right=N-1;
int find=0;
printf("input your number:");
scanf("%d",&k);
while(!find&&left<right)
{
mid=(left+right)/2;
if(k==table[mid])
find=1;
else if(k<table[mid])
right=mid-1;
else left=mid+1;
}
if(find==1)
printf("%d in table[%d]\n",k,mid);
else
printf("can't find the number%d.\n",k);
}
星月小木木
2016-01-15 · TA获得超过3.2万个赞
知道大有可为答主
回答量:2.4万
采纳率:0%
帮助的人:9957万
展开全部
#include <stdio.h>

int binfind(int val[] , int num , int value)
{
int start = 0;
int end = num - 1;
int mid = (start + end)/2;
while(val[mid] != value && start < end)
{
if (val[mid] > value)
{
end = mid - 1;
}
else if (val[mid] < value)
{
start = mid + 1;
}
mid = ( start + end )/2;
}
if (val[mid] == value)
return mid;
else
return -1;
}

int main()
{
int nums[] = {1 , 3 , 4 ,7 ,8 , 12 ,45 ,67 ,97 ,123 ,456 ,675 ,1111 , 4534 , 4563};
int result = binfind(nums , sizeof(nums) / sizeof(nums[0]) , 45);
if (result < 0)
{
printf("查无此数");
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7147c7232a
2006-10-21 · 超过17用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:63.7万
展开全部
比如要在0到100中找42
那么先2分
50不是
50>40
再2分
25
依次
直到找到
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式