时间复杂度:o(lgn)
代码:
/*************************************************************************
> File Name: binary_search.cpp
> Author sangoly
> Mail: sangoly@aliyun.com
> Created Time: 2014年07月01日 星期二 16时33分53秒
************************************************************************/
#include<iostream>
using namespace std;
int binary_search(int list[], int start, int end, int target) {
if (start > end)
return -1;
int middle = (start + end) / 2;
if (list[middle] == target)
return middle;
else if (list[middle] > target)
return binary_search(list, start, middle - 1, target);
else
return binary_search(list, middle + 1, end, target);
}
int main() {
int list[7] = {1, 2 ,3 ,4 ,5 ,6 ,7};
int middle = binary_search(list, 0, 6, 2);
if (middle < 0)
cout<<"Did't find"<<endl;
else
cout<<"Find it in index "<<middle + 1<<endl;
return 0;
}