1.二分查找法的循环实现
int BinarySearchIteratively(int arr[], int n, int x)
{
int first, mid, last;
if (arr == NULL || n <= 0)
{
return -1;
}
first = 0; last = n - 1;
while (first <= last)
{
mid = (first + last) / 2;
if (arr[mid] == x)
{
return mid;
}
else if (arr[mid] > x)
{
last = mid - 1;
}
else
{
first = mid + 1;
}
}
return -1;
}
2.二分查找法的递归实现
int BinarySearchRecursivelyCore(int arr[], int first , int last, int x);
int BinarySearchRecursively(int arr[], int n, int x)
{
if (arr == NULL || n <= 0)
{
return -1;
}
return BinarySearchRecursivelyCore(arr, 0 , n - 1, x);
}
int BinarySearchRecursivelyCore(int arr[], int first , int last, int x)
{
int mid;
if (first <= last)
{
mid = (first + last) / 2;
if (arr[mid] == x)
{
return mid;
}
else if (arr[mid] > x)
{
return BinarySearchRecursivelyCore(arr, first, mid - 1, x);
}
else
{
return BinarySearchRecursivelyCore(arr, mid + 1, last, x);
}
}
return -1;
}