【算法代码】
#include <bits/stdc++.h>
using namespace std;
void biSearch(int x,vector<int> v) {
sort(v.begin(),v.end()); //Because the elements have to be ordered
int flag=0;
int low=0;
int high=v.size()-1;
int mid;
while(low<=high) {
mid=(low+high)/2;
if(x==v[mid]) {
flag=1;
break;
}
else if(x<v[mid]) high=mid-1;
else low=mid+1;
}
if(flag==1) cout<<"yes"<<endl;
else cout<<"no"<<endl;
}
int main() {
vector<int> v;
int e;
cin>>e;
int x;
while(cin>>x) {
v.push_back(x);
}
biSearch(e,v);
return 0;
}
/*
in:
5
12 8 6 86 26 91 5 7
out:
yes
-------------
in:
123
12 8 6 86 26 91 5 7
out:
no
*/
【注意事项】
运行程序,输入测试样例后,回车后按Ctrl+z便可出现结果。
代码中 sort(v.begin(),v.end()); 务必不能少,因为二分查找是对有序序列进行操作的。