int Bi_Search(int a[],int n,int
b)//
{//返回等于b的第一个
if(n==0)
return -1;
int low =
0;
int high = n-1;
int last =
-1;//用last记录上一次满足条件的下标
while (low<=high)
{
int mid =
low +(high-low)/2;
if (a[mid]==b)
{
last =
mid;
high = mid -1;
}
else
if(a[mid]>b)
high = mid -1;
else
low = mid
+1;
}
return last;
}
int Bi_Search1(int a[],int n,int
b)//大于b的第一个数
{
if(n<=0)
return -1;
int last =
-1;
int low = 0;
int high = n-1;
while
(low<=high)
{
int mid = low +(high -
low)/2;
if(a[mid]>b)
{
last = mid;
high =
mid -1;
}
else if (a[mid]<=b)
{
low =mid
+1;
}
}
return last;
}
原文:http://www.cnblogs.com/zn505119020/p/3551557.html