二分查找
在一个有序数组中查找元素。
template<class T>
int binarySearch(T a[], int n, const T& x)
{
// 在有序数组中a中查找元素x
// 如果存在,就返回元素x的位置,否则返回-1
// 数据段的左端
int left = 0;
// 数据段的右端
int right = n -1;
while(left <= right)
{
int middle = (left + right)/2;
if(a[middle] == x)
return middle;
if(x > a[middle])
left = middle + 1;
else
right = middle - 1
}
// 没有找到x
return -1;
}