今天做题遇到了一题求下界的题。
把二分查找求上界和下界复习一遍。
代码实现:
#include <iostream>
using namespace std;
int main()
{
int a[10]={0,1,1,2,3,3,3,3,5,6};
//找3的下界
int l=0,r=9;
int ans;
while(r>l)
{
int mid=(r+l)>>1;
if(a[mid]>=3)
{
ans=mid;
r=mid;
}
else
{
l=mid+1;
}
}
cout<<ans<<endl;
//找3的上界
l=0,r=9;
while(r>l)
{
int mid = (l+r)/2;
if(a[mid]<=3)
{
ans=mid;
l=mid+1;
}
else
{
r=mid;
}
}
cout<<ans<<endl;
return 0;
}