犯了一个错误:忽略了mid要不断2分的,mid = start+end,写在了循环外面。
Position BinarySearch(List L,ElementType X)
{
if(L ==NULL)
return NotFound;
int start = 1,end = L->Last;
int mid;
while(start<=end)
{
mid= (start+end)/2;
if(X>L->Data[mid])
{
start=mid+1;
}
else if(X<L->Data[mid])
{
end=mid-1;
}
else if(X == L->Data[mid])
return mid;
}
return NotFound;
}