二分查找算法

#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;
}

原文地址:https://www.cnblogs.com/fuyanan/p/3029426.html