二分查找
来源:互联网 发布:java equals int 编辑:程序博客网 时间:2024/06/13 05:47
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
const int maxn=1000009;
using namespace std;
int middlecheck(int a[],int len,int m)
{ int high=len-1;
int low=0;
int mid;
while(high>=low)
{ mid=(high+low)/2;
if(a[mid]<m&&a[mid+1]>m) break;
if(a[mid]<m) low=mid+1;
else{
high=mid;
}
}
cout<<mid+1<<endl;
return 0;
}
int main()
{ int n,m;
int l[maxn];
cin>>n>>m;
for(int i=0;i<n;i++)
{ scanf("%d",&l[i]);
}
//sort(l,l+m);
middlecheck(l,n,m);
return 0;
#include <cstdio>
#include <cstdlib>
#include <algorithm>
const int maxn=1000009;
using namespace std;
int middlecheck(int a[],int len,int m)
{ int high=len-1;
int low=0;
int mid;
while(high>=low)
{ mid=(high+low)/2;
if(a[mid]<m&&a[mid+1]>m) break;
if(a[mid]<m) low=mid+1;
else{
high=mid;
}
}
cout<<mid+1<<endl;
return 0;
}
int main()
{ int n,m;
int l[maxn];
cin>>n>>m;
for(int i=0;i<n;i++)
{ scanf("%d",&l[i]);
}
//sort(l,l+m);
middlecheck(l,n,m);
return 0;
}
也可以用stl中的函数来执行这个操作。
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#define maxn 200
using namespace std;
int main()
{ int m[maxn]={1,3,5,7,9};
int n;
cin>>n;
//注意,这俩函数返回的都是坐标,
//一个是大于他的第一个,一个是小于等于
int l=upper_bound(m,m+5,n)-m;
int c=lower_bound(m,m+5,n)-m;
printf("%d %d\n",l,c);
return 0;
}
0 0
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- JavaScript
- Linux如何盈利
- Guest系统安装过程中安装驱动程序
- 【0dyV0wQDC8m】新视野影院 哪个是真的?
- Java android应用开发环境搭建配置
- 二分查找
- 面试中排序算法问题
- 决策树
- MySQL多条件查询语句
- Linux下IPC主题三----------------共享内存
- RMQ算法
- DHCP服务器简介
- vim使用及配置策略
- 博为峰JavaEE技术文章 ——MyBatis BLOB字段