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;
}