二分查找算法或折半查找法(迭代和递归实现)
/*
二分查找算法或折半查找法(迭代和递归实现)
*/
int BinarySearch(int arr[], int N, int value)
{
int low = 0;
int high = N - 1;
while (low <= high) {
int middle = (low + high)/2;
if (arr[middle] > value) {
high = middle - 1;
}
else if (arr[middle] == value){
return middle;
}
else{
low = middle + 1;
}
}
return -1;
}//迭代法
int BinarySearchRecurse(int arr[], int low, int high, int value)
{
int middle = (low + high)/2;
if(low > high){
return -1;
}
else{
if (arr[middle] == value) {
return middle;
}
else if (arr[middle] > value){
return BinarySearchRecurse(arr, low, middle-1, value);
}
else{
return BinarySearchRecurse(arr, middle+1, high, value);
}
}
}//递归法