前提条件:原记录已经有序。
时间复杂度:O(log2n)
/**
* 设data已经按升序排列
* 非递归版本
*/
template<typename T>
int binarySearch(const T *data, int n, T k)
{
int index = -1;
int low = 0;
int high = n - 1;
int mid;
while (low <= high)
{
mid = (low + high) / 2;
if (k == data[mid])
{
index = mid;
break;
}
else if (k > data[mid])
{
low = mid + 1;
}
else
{
high = mid - 1;
}
}
return index;
}