最主要的是构造一个循环,不断缩小查找范围,
注意循环结束的条件是hi<lo
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n,m,i,j,b,lo=0,hi,mid;
scanf("%d %d",&n,&m);
int *a=(int*)malloc(sizeof(int)*n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
hi=n-1;
while(hi>=lo)
{
mid=(hi+lo)/2;
if(m==a[mid])
break;
if(m>a[mid])
{
lo=mid+1;
}
if(m<a[mid])
{
hi=mid-1;
}
}
if(hi>=lo)
{
b=mid;
}
else
{
b=-1;
}
printf("%d",b);
return 0;
}