在这里我们可以直接二分,或者更方便的我们有一个函数 lower_bound(a,a+num,val);
1.直接二分的方法
int binary(int val,int a[],int l,int r)
{
int m;
int id;
while(l<=r)
{
m=l+(r-l)/2; //避免溢出
if(a[m]>val)
{
id=m;
r=m-1;
}
else
l=m+1;
}
return id;
}
2.STL找的第一个大于k 的下标,注意函数返回的是位置。
int a[100]={1,5,3,9,8};
int *x=lower_bound(a,a+5,7);
cout<<x-a<<endl;