二分查找
来源:互联网 发布:tv263网络电视 编辑:程序博客网 时间:2024/06/12 18:26
二分查找的迭代实现:
int binary(int a[],int x,int y,int v){ int m; while(x<y) { m=(x+y)/2; if(a[m]==v) return m; else if(a[m]>v) y=m; else x=m+1; } return -1;}
二分查找求下界
int lower_bound(int a[],int x,int y,int v){ int m; while(x<y) { m=(x+y)/2; if(a[m]>=v) y=m; else x=m+1; } return x;}
二分查找求上界
int upper_bound(int a[],int x,int y,int v){ int m; while(x<y) { m=(x+y)/2; if(a[m]<=v) x=m+1; else y=m; } return y;}
用c++写程序的时候可以直接使用头文件
#include<algorithm>//STL算法的头文件,包含sort,lower_bound和upper_boundusing namespace std;eg:给出n个整数Xi 和m个询问,对于每个询问(a,b),输出闭区间[a,b]内的整数xi的个数
#include<cstdio>#include<algorithm>using namespace std;int v[10000];int main(){ int n,m,a,b; scanf("%d%d",&n,&m); for(int i=0;i<n;i++) scanf("%d",&v[i]); sort(v,v+n); for(int i=0;i<m;i++) { scanf("%d%d",&a,&b); printf("%d\n",upper_bound(v,v+n,b)-lower_bound(v,v+n,a)); } return 0;}
0 0
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 关于反射重新讲解01-05-2015
- Android中获取电池电量
- CHM文件显示不了
- 卒纂桌浊滋左仔最紫抓综锥兹捉谞谞拽抓
- 当程序到后台后,继续完成Long-Running Task 任务
- 二分查找
- Hibernate学习笔记(二)——创建一个简单的Hibernate项目
- android NDK环境搭建
- ubuntu 解决cache逐渐变大导致oom-killer将某些进程杀死的情况
- MSTAR 常用函数的名称和定义!
- Android 反编译资料整理
- c# 如何将字符串中用","分开的数字分别存入数组中
- 运算符重载相关 笔记
- Android 文件夹介绍