//非递归
#include <iostream>
using namespace std;
int BinarySearch(int array[], int low, int hign, int value)
{
int mid = 0;
while(low < hign)
{
mid = (low + hign)/2;
if (value == array[mid])
{
return value;
}
else if (value > array[mid])
{
low = mid+1;
}
else
{
hign = mid-1;
}
}
return -1;
}
//递归法
int BinarySearch_2(int array[], int low, int hign, int value)
{
if (low > hign )
return -1;
int mid = (hign + low)/2;
{
if (array[mid] == value)
{
return mid;
}
else if (value > array[mid])
{
low = mid+1;
BinarySearch_2(array, low, hign, value);
}
else
{
hign = mid-1;
BinarySearch_2(array, low, hign, value);
}
}
}
int main(int argc, char *argv[])
{
int array[10] = {1,2 ,3,4, 5,6,7,8,9,10};
cout<<BinarySearch_2(array, 1, 10, 11)<<endl;
return 0;
}