二分查找算法
#include <vector>
#include <iostream>
using namespace std;
int BinarySearch(const vector<int> & a,const int & x,int low,int high)
{
if(low>high)
return -1;
int mid = (low+high)/2;
if (a[mid]<x)
{
return BinarySearch(a,x,mid+1,high);
}
else if (a[mid]>x)
{
return BinarySearch(a,x,low,mid-1);
}
else
return mid;
}
int Search(const vector<int> & a,const int & x)
{
return BinarySearch(a,x,0,a.size()-1);
}
int main()
{
vector<int> box;
box.push_back(1);
box.push_back(4);
box.push_back(6);
box.push_back(7);
box.push_back(8);
box.push_back(10);
box.push_back(13);
box.push_back(21);
box.push_back(22);
box.push_back(30);
const int searchValue = 22;
int result = Search(box,searchValue);
if (result == -1)
{
cout<<"要查的数字不在数组内!"<<endl;
}
else
cout<<searchValue<<" 的位置在第 "<<++result<<"位"<<endl;
return 0;
}