写一函数实现二分查找法
答案:1 悬赏:0 手机版
解决时间 2021-03-25 09:56
- 提问者网友:戎马万世
- 2021-03-25 00:57
写一函数实现二分查找法
最佳答案
- 五星知识达人网友:北城痞子
- 2021-03-25 02:04
楼主你好
以前写过一个 以下是完整代码:
#include
#define MAX 40
int Half_Search(int a[],int n,int k)
{
int start,end,mid;
start= 0;
end= n - 1;
while(start <= end)
{
mid = (start + end) / 2;
if(k == a[mid])
return mid;
else if(k > a[mid])
start = mid + 1;
else
end = mid - 1;
}
return -1;
}
int main()
{
int a[MAX],n=0,k,p;
do{
scanf("%d",a + n++);
}while(getchar() != '\n');
scanf("%d",&k);
p = Half_Search(a,n,k);
if(-1 == p)
printf("不存在!\n");
else
printf("a[%d]=%d\n",p,k);
return 0;
}
希望能帮助你哈追问能不能加上详细注释 谢谢追答#include
#define MAX 40
int Half_Search(int a[],int n,int k)//二分法查找
{
int start,end,mid;
start= 0;//起点
end= n - 1;//终点
while(start <= end)
{
mid = (start + end) / 2;//中间项
if(k == a[mid])//如果等于中间项 那么直接返回mid
return mid;
else if(k > a[mid])//如果大于中间项 起始位置从mid之后的第一个开始 也就是mid+1
start = mid + 1;
else//如果小于中间项 终点位置就是mid前面一项 也就是mid-1
end = mid - 1;
}
return -1;//查找失败 返回-1
}
int main()
{
int a[MAX],n=0,k,p;
do{
scanf("%d",a + n++);
}while(getchar() != '\n');
scanf("%d",&k);
p = Half_Search(a,n,k);
if(-1 == p)
printf("不存在!\n");
else
printf("a[%d]=%d\n",p,k);
return 0;
}
以前写过一个 以下是完整代码:
#include
#define MAX 40
int Half_Search(int a[],int n,int k)
{
int start,end,mid;
start= 0;
end= n - 1;
while(start <= end)
{
mid = (start + end) / 2;
if(k == a[mid])
return mid;
else if(k > a[mid])
start = mid + 1;
else
end = mid - 1;
}
return -1;
}
int main()
{
int a[MAX],n=0,k,p;
do{
scanf("%d",a + n++);
}while(getchar() != '\n');
scanf("%d",&k);
p = Half_Search(a,n,k);
if(-1 == p)
printf("不存在!\n");
else
printf("a[%d]=%d\n",p,k);
return 0;
}
希望能帮助你哈追问能不能加上详细注释 谢谢追答#include
#define MAX 40
int Half_Search(int a[],int n,int k)//二分法查找
{
int start,end,mid;
start= 0;//起点
end= n - 1;//终点
while(start <= end)
{
mid = (start + end) / 2;//中间项
if(k == a[mid])//如果等于中间项 那么直接返回mid
return mid;
else if(k > a[mid])//如果大于中间项 起始位置从mid之后的第一个开始 也就是mid+1
start = mid + 1;
else//如果小于中间项 终点位置就是mid前面一项 也就是mid-1
end = mid - 1;
}
return -1;//查找失败 返回-1
}
int main()
{
int a[MAX],n=0,k,p;
do{
scanf("%d",a + n++);
}while(getchar() != '\n');
scanf("%d",&k);
p = Half_Search(a,n,k);
if(-1 == p)
printf("不存在!\n");
else
printf("a[%d]=%d\n",p,k);
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯