在一个
有序数组中查找元素x,可以使用折半查找。
变量 l 和 r 分别代表
搜索段的左右两个端点。
开始时,在0到n-1之间查找,因此 l 与 r 的初始值分别为 0 和 n-1。在
查找过程中,保持不变的是
x是a[0:n-1]中的元素,当且仅当x是a[ l : r]中的元素。
int binarySearch(int a[], int n, const int& x)
{
int l =0;
int r =n-1;
while(l<=r)
{
int m = (l+r)/2;
if(x == a[m]) return m;
if(x > a[m])
l = m+1;
else
r =m-1;
}
return -1; //没有找到x
}