思路
直接套用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
本文介绍了一种基于链表的二分查找算法实现,并详细解释了其代码逻辑。该算法适用于下标非0开始的数据结构,能够有效地找到指定元素的位置,若未找到则返回特定值。文中还特别提醒读者注意题目的具体要求。

被折叠的 条评论
为什么被折叠?



