标签:
分析:这是一道简单的查找元素的题,如果简单一个一个查找,时间复杂度是O(n),提交的时候提示超时,于是想到了用二分查找的时间复杂度降为了O(logn),代码如下:
#include<iostream> #include<stdio.h> #include<algorithm> #include<string.h> using namespace std; int a[1000100]; 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; else low=mid+1; } } int main() { int n,m,t; cin>>n>>m; //刚开始用while循环没有过去,去掉后过去啦 for(int i=0;i<n;i++) cin>>a[i]; sort(a,a+n); for(int i=0;i<m;i++) { cin>>t; if(binary_search(a,n,t)) { printf("YES\n"); } else printf("NO\n"); } return 0; }
标签:
原文地址:http://blog.csdn.net/qq_qingtian/article/details/44275031