折半查找的递归和非递归实现
<pre name="code" class="cpp">#include<iostream>
using namespace std;
//递归实现
//int BinarySearch_Recursion(int* arr,int low,int high,int x)
//{
// if (low > high)return -1;
// int mid = (low + high)/2;
// if (arr[mid] == x)return mid;
// else if (arr[mid] > x)return BinarySearch(arr, low, mid-1, x);
// else
// return BinarySearch(arr,mid + 1, high, x);
//}
//非递归实现
int BinarySearch_NonRecursion(int* arr, int low, int high, int x)
{
int mid;
while (low<=high)
{
mid = (low + high) / 2;
if (arr[mid] == x) return mid;
else if (arr[mid] > x) high = mid - 1;
else low = mid + 1;
}
if (low > high)return -1;
}
int main()
{
int arr[] = { 1, 2, 3, 4, 5, 7, 8, 9 };
int value;
cin >> value;
cout << BinarySearch_NonRecursion(arr, 0, sizeof(arr) / sizeof(int)-1, value) << endl;
return 0;
}