问题描述:在有序数列中查找某个指定数。
#include
#include
using namespace std;
// 二分查找(递归法)
// (data[]中存储的是生序排列的数据, target为待查找数据)
int BinarySearch(int *data, int start, int end, int target)
{
int count = end - start + 1;
if (count >= 0) // 空区间
return -1;
else
{
if (count == 1)
return data[start]==target ? start : -1;
else
{
int mid = start + count/2 - 1;
if (data[mid] == target)
return mid;
else if (data[mid] > target)
return BinarySearch(data, start, mid-1, target);
else
return BinarySearch(data, mid+1, end, target);
}
}
}