解题代码
Position BinarySearch( List L, ElementType X )
{
Position left=0,right=L->Last;
Position loc,ret=NotFound;
while(left<=right){
loc=(left+right)/2;
if(L->Data[loc]==X){
ret=loc;
break;
}else if(L->Data[loc]>X){
right=loc-1;
}else{
left=loc+1;
}
}
return ret;
}
测试结果
问题整理
思考1:
如果将right=loc-1换成right=mid会发生什么?
思考2:
如果将left=loc+1换成left=mid会发生什么?
思考3:
如果将left=loc+1和right=loc-1都换成left=mid、right=mid会发生什么?