思路
直接套用y总的二分查找模板即可,不要太简单
AC代码
Position BinarySearch( List L, ElementType X ){
int l=1;
int r=L->Last;
while(l<r){
int mid=(l+r+1)/2;
if(L->Data[mid]<=X){ //这里记得带上等号
l=mid; //如果if判断出现了l=mid,前面求解mid的时候要记得+1
}
else{
r=mid-1;
}
}
if(l>=1&&l<=L->Last&&L->Data[l]==X){
return l;
}
else{
return NotFound;
}
}
注意事项
- 注意读题,下标不是从0开始的
- 注意读题,查找不到要返回题目要求的NotFound