二分查找的代码如下:
#include <iostream>
using namespace std;
long BinarySearch(int a[], int begin, int end, int elem)
{
if(begin > end)
return -1;
int mid = (begin + end) / 2;
//int mid = begin + (end - begin + 1) / 2 - 1;
if(a[mid] == elem)
return mid;
else if(a[mid] > elem)
return BinarySearch(a, begin, mid - 1, elem);
else
return BinarySearch(a, mid + 1, end, elem);
}
int main()
{
int a[] = {1, 2, 3, 4, 5, 6, 7, 8};
int len = sizeof(a)/sizeof(int);
//cout<< BinarySearch(a, 0, len - 1, 6);
cout<< BinarySearch(a, 0, len - 1, 6);
return 0;
}