首页 > 代码库 > 二分查找的使用说明
二分查找的使用说明
先输入一个数n。数组a里面存入n个数,在n个数里面查找m,假设能找到就输出YES。否则的话就输出NO。例子
输入:
5 3
2 3 4 5 1
输出:
YES
一般的情况下。时间复杂度为O(n)。当n>100000000的时候。就要考虑到时间复杂度了,所以要用到二分查找,这样时间复杂度就为log(n)了,在学习二分查找的时候画出图更好理解一点
代码例如以下:
#include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; bool binary_search(int *a,int len,int goal) { int low=0; int high=len-1; while(low<=high) { int mid=(low+high)/2; if(a[mid]==goal) return true; else if(a[mid]>goal) //说明查找的数字在前半部分,故把high指针移到mid-1的位置 high=mid-1; else low=mid+1; //说明查找的数字在后半部分,故把low指针移动到mid+1的位置 } } int main() { int n,m; int a[100]; while(cin>>n>>m) { for(int i=0;i<n;i++) cin>>a[i]; sort(a,a+n); //必需要先排序 bool d= binary_search(a,n,m); if(d) printf("YES\n"); else printf("NO\n"); } return 0; }
二分查找的使用说明
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。