题目
用递归实现对数组元素的二分查找
实现
代码
#include<iostream>
using namespace std;
int BinarySearch(int a[], int low, int high, int key) {
if (low > high)
return -1;
else {
int mid = (low + high) / 2;
if (a[mid] == key)
return mid;
else if (a[mid] > key)
return BinarySearch(a, low, mid - 1, key);
else
return BinarySearch(a, mid + 1, high, key);
}
}
int main() {
int a[] = { 2, 3, 5, 8, 13, 16, 20 };
int pos = BinarySearch(a, 0, 6, 10);
cout << pos << endl;
pos = BinarySearch(a, 0, 6, 16);
cout << pos << endl;
return 0;
}
输出
-1
5