C语言实现折半查找
答案:2 悬赏:50
解决时间 2021-01-25 22:06
- 提问者网友:謫仙
- 2021-01-25 14:07
C语言实现折半查找
最佳答案
- 二级知识专家网友:有你哪都是故乡
- 2021-01-25 15:40
#include
int look_up(int a[],int n,int x)
{
int left=0,right=n-1,mid;
while(left<=right)
{
mid=(left+right)/2;
if(x==a[mid])
return mid+1; //加一后才是它的逻辑位序
else if(xright=mid-1;
else
left=mid+1;
}
if(left>right)
return -1;
}
int main()
{
int a[100],n,x,i,result;
scanf("%d",&n);
for(i=0;i
scanf("%d",&a[i]);
scanf("%d",&x);
result=look_up(a,n,x);
if(result>=0)
printf("%d
",result);
else
printf("No
");
}
全部回答
- 1楼网友:轻熟杀无赦
- 2021-01-25 16:21
#include<stdio.h>
int find(int a[],int l,int r,int x)
{int i,j,m;
if(l>r)return -1;
i=l;j=r;m=(i+j)/2;
if(a[m]==x)return m;
else if(a[m]<x)return find(a,m+1,r,x);
else return find(a,l,m-1,x);
}
int main ()
{int n,i,x;
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++)
scanf("%d%*c",&a[i]);
scanf("%d",&x);
i=find(a,0,n-1,x);
if(i==-1)printf("Not Find %d! ",x);
else printf("%d ",i+1);
return 0;
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯