#include "stdafx.h"
#include <vector>
#include <iostream>
int bsearch(std::vector<int> vec , int x)
{
int low ,high ;
low = 0 ;
high = vec.size() -1 ;
int mid =0 ;
while(low <=high)
{
mid = (low +high ) /2;
//if find x then break
if(vec[mid] == x) break;
//if x is greater than the mid value , assign the mid+1 to low
else if (x > vec[mid])
low = mid +1 ;
else
high = mid -1;
}
if(low <= high)
return mid;
else
return -1;
}
int main(int argc, char* argv[])
{
std::vector<int> vec ;
for(int i=0 ;i< 10;i++)
{
vec.push_back(i);
}
int ret = 0;
ret = bsearch(vec ,5);
std::cout<<"is 5 in vector "<< (ret== -1? "true":"false")<<"postion index:"<<ret <<std::endl;
ret = bsearch(vec ,11);
std::cout<<"is 11 in vector "<<(ret== -1? "true":"false")<<" position index:"<<ret <<std::endl;
return 0;
}
说明:程序使用了vector 存储数组,主要是方便取到数组长度