C语言问题求解,二分查找?
1个回答
展开全部
二分查找也称折半查找,它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。
#include <stdio.h>
int cnt;
int binfind(int a[],int l,int r,int x)
{ cnt++;
int m=(l+r)/2;
if(l>m)return -1;
if(x==a[m])return m;
if(x>a[m])return binfind(a,m+1,r,x);
return binfind(a,l,m-1,x);
}
int main()
{ int n,i,x,a[100];
scanf("%d",&n);
for(i=0; i<n; i++)
scanf("%d",&a[i]);
scanf("%d",&x);
i=binfind(a,0,n-1,x);
printf("%d\n%d\n",i,cnt);
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询