//递归
int BinarySearch(int arr[],int n,int left, int right)
{
if (left <= right)
{
int middle = left + (right - left)/2; //防溢出
if (n == arr[middle])
{
return middle;
}
else if (n < arr[middle])
{
return BinarySearch(arr,n,left,middle - 1);
}
else
{
return BinarySearch(arr,n,middle + 1,right);
}
}
return -1;
}
//非递归
int BinarySearch(int arr[],int n,int length)
{
int left = 0;
int right = length - 1;
int middle = 0;
while (left <= right)
{
middle = left + (right - left)/2;
if (arr[middle] == n)
{
return middle;
}
else if (n < arr[middle])
{
right = middle - 1;
}
else
{
left = middle + 1;
}
}
return -1;
}