两种写法:
循环:
int fuc(int *s,int x,int max)
{
int left=0;
int right=max-1;
int mid;
while(left<=right)
{
mid=(right+left)/2;
if(s[mid]>x)
right=mid-1;
else if(s[mid]<x)
left=mid+1;
else return mid;
}
return -1;
}
递归:
int fuc2(int *s,int x,int left,int right)
{
int mid=(left+right)/2;
int num=-1;
if(left<=right)
{
if(s[mid]<x)
num=fuc2(s,x,mid+1,right);
else if(s[mid]>x)
num=fuc2(s,x,left,mid-1);
else
num=mid;
}
return num;
}