Position BinarySearch(List L, ElementType X)
{
int i = 1, j = L->Last;
while (i<=j) {
int mid = (i + j) / 2;
if (L->Data[mid] == X)return mid;
else if(L->Data[mid] >X) j = mid - 1;
else i = mid + 1;
}
return NotFound;
}
//数组从1开始存储。
如果函数一开始对L->Data[i]和L->Data[j]进行了特判,终止条件就可以修改为while(i<J);但是不可以是while(i!=j);
原因如下:
对于数组{1,2,3,4}查找3.5 会得到j<i的情况!