Position BinarySearch(List L, ElementType X) {
int low = 1, high = L->Last; //置区间初值(元素从下标1开始查找)
while (low <= high) { //确保待查区间有意义
int mid = (low + high) / 2;
if (L->Data[mid] == X) //找到待查元素X
return mid;
else if (L->Data[mid] < X) //中间元素比待查元素小,继续在后半去进行查找
low = mid + 1;
else //中间元素比待查元素大,继续在前半去进行查找
high = mid - 1;
}
return NotFound; //顺序表中不存在待查元素X
}
注意计算mid的时候low+high可能会溢出,所以使用mid=low+(high-low)/2