//二分法搜索,返回x在a[]中的位置,如果没有找到,返回-1,a[]是有序的,n为元素个数n>1,x为待查元素
int bisearch(int a[],int n,int x){
int low,high,mid;
low=0;
high=n-1;
while(low<=high){
mid=(low+high)/2;
if(x==a[mid])
break;
x<a[mid]?high=mid-1:low=mid+1;
}
if(low>high)
return -1;
return mid;
}
//方法2:
int bSearch(int begin, int end, int e)
{
int mid, left = begin, right = end;
while(left <= right)
{
mid = (left + right) >> 1;
if(num[mid] >= e) right = mid - 1;
else left = mid + 1;
}
return left;
}
int bSearch(int begin, int end, int e)
{
int mid, left = begin, right = end;
while(left <= right)
{
mid = (left + right) >> 1;
if(num[mid] > e) right = mid - 1;
else left = mid + 1;
}
return right;
}