二分搜缩简单,注意vector动态输入
#include<iostream>
#include<vector>
using namespace std;
int BinarySearch(vector<int>&a,int x)
{
if (a.size() == 0)
return -1;
int len = a.size();
int left = 0;
int right = len - 1;
while (left <= right)
{
int middle = (left + right) / 2;
if (x == a[middle]) return middle;
if (x > a[middle]) left = middle + 1;
else right = middle - 1;
}
return -1;
}
int main()
{
int x;
cin >> x;
cout << endl;
vector<int>a;
int num;
while (cin>>num && num != -1)
{
a.push_back(num);
}
cout << BinarySearch(a,x);
system("pause");
}
测试用例:
x=2
a=1 2 3 4 5 (需要在末尾输-1来结束)
返回1,对应2,正确