#1128 : 二分·二分查找&ѭ : 二分·二分查找之k小数
来源:互联网 发布:西部数据mac格式化 编辑:程序博客网 时间:2024/05/17 08:18
数组长度为N,保证没有重复的数。
一个简单有效的方法是对数组进行排序后使用有序数组的二分查找,时间复杂度为O(NlogN)。
观察我们第一个算法,对于选定的Mid。如果数组满足a[L..Mid-1]<a[Mid]且a[Mid]<a[Mid+1..R],即可进行区间的分割,从而使得区间范围减半。
既然如此,那么我们可以通过一次遍历交换将比a[Mid]小的数放到a[Mid]左边,比a[Mid]大的数放到a[Mid]右边。(这里使用了快速排序的思想)
其他部分仍然同有序数组的二分查找相同,但由于每一次都遍历了整个数组,所以时间复杂度变为:O(N/2^0+N/2^1+N/2^2+1)=O(2N)
#include <iostream>#include <stack>#include <cstdio>#include <cstring>#include <set>using namespace std;typedef long long ll;int main(){ int n,m; scanf("%d%d",&n,&m); int yes=0,cnt=0; for(int i=1;i<=n;i++) { int t; scanf("%d",&t); if(m==t) yes=1,cnt++; else if(t<m) cnt++; } if(yes) printf("%d\n",cnt); else printf("-1\n");}
#include <iostream>#include <stack>#include <cstdio>#include <cstring>#include <set>using namespace std;typedef long long ll;const int maxn=1000050;int a[maxn];int main(){ int n,k; scanf("%d%d",&n,&k); for(int i=1;i<=n;i++) scanf("%d",&a[i]); if(n<k) { printf("-1\n"); } else { int l=1,r=n; while(l<=r) { int flag=a[l],left=l,right=r; while(left<right) { while(left<right&&a[right]>flag) right--; a[left]=a[right]; while(left<right&&a[left]<flag) left++; a[right]=a[left]; } a[left]=flag; if(left<k) l=left+1; else if(left>k) r=left-1; else break; } printf("%d\n",a[k]); }}
0 0
- #1128 : 二分·二分查找&ѭ : 二分·二分查找之k小数
- 二分·二分查找之k小数
- 1133 : 二分·二分查找之k小数
- hihocoder 1133 : 二分·二分查找之k小数
- hihoCoder 1133 二分·二分查找之k小数
- hiho#1133 : 二分·二分查找之k小数
- #1133 : 二分·二分查找之k小数
- hihocoder: 二分·二分查找之k小数
- hihoCoder 二分·二分查找之k小数
- hihocoder1133 : 二分·二分查找之k小数
- 二分查找之k小数
- #1133 : 二分·二分查找之k小数 ( 快速排序, 分治 OR nth_element() 函数)
- #1133 : 二分·二分查找之k小数(优先队列或SBT或排序)
- #1128 : 二分·二分查找
- #1128 : 二分·二分查找
- hiho一下 第三十七周 题目1 : 二分·二分查找之k小数
- hihocoder#1133之非有序数组二分查找k小数
- hihoCoder 1128 二分·二分查找
- 求一个数组中的出现次数最多的元素的个数
- Uncaught Error: Call to undefined function lang() in framework/tpl/think_exception.tpl:82
- 点到超平面距离推导
- Oracle 性能优化
- 利用@media screen实现网页布局的自适应,@media screen and
- #1128 : 二分·二分查找&ѭ : 二分·二分查找之k小数
- MAC OS安装Maven
- codeforces 510b Fox And Two Dots
- Objective-C Method Swizzling 的最佳实践
- XXX正在运行 点按即可了解详情或停止应用
- js实现模糊搜索
- Debian开启SSH
- mysql:sql alter database修改数据库字符集
- java基础提高篇--java的三大特性--封装