Bootstrap

使用STL vector实现的二分查找算法

【算法代码】

#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()); 务必不能少,因为二分查找是对有序序列进行操作的

;