二分查找的边界问题
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; }
相关文章推荐
- 二分查找中的边界问题:+1,-1,<,<=
- 二分查找的边界问题
- 二分查找非递减序列的边界问题
- 经典二分查找问题
- 二分查找中的编程小问题
- 问题 A: 二分查找
- 【LintCode 简单】457. 经典二分查找问题
- LintCode_Java旅程 经典二分查找问题(折半查找)
- 457 - 经典二分查找问题
- 《java入门第一季》之Arrays类前传(排序案例以二分查找注意的问题)
- 经典二分查找问题
- 二分查找 (最经典代码,及其边界条件的实践分析)
- 使用std::lower_bound和std::upper_bound解决常见的二分查找问题
- 二分查找(Binary Search)需要注意的问题,以及在数据库内核中的实现
- 九度OJ 1069 二分查找问题
- 经典二分查找问题
- 二分查找中的精度问题
- 二分查找的边界怎么写?
- 二分查找引出的问题
- 旋转数组二分查找问题