您的位置:首页 > 其它

二分查找的边界问题

2017-08-18 10:43 316 查看

关于二分查找的边界问题

二分查找首先要满足单调性,对于这种方式,l==r,l是第一个大于差找位置的位置,举例,

在1 2 3 4 5中查找3,l==r==4,根据需要输出l或l-1.

 

//二分查找
#include<bits/stdc++.h>
using namespace std;
int a[5616545];
int n;
int find(int x)
{
int l=1,r=n,mid;
while(l<r)
{
mid=(l+r)>>1;
if(a[l]>x)
r=mid;
else
l=mid+1;
}
return l-1;
}

int main()
{
int x;
cin>>n>>x;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
sort(a+1,a+n+1);
cout<<find(x);
return 0;
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: