Position BinarySearch(List L,ElementType X)
{
if(X<L->Data[1]||X>L->Data[L->Last]) return NotFound; /*出界*/
int left=1;int right=L->Last;
int mid;
while(left!=right){
mid=(left+right)/2;
if(L->Data[mid]>X) right=mid; /*right可向左移动*/
if(X>L->Data[mid]) left=mid+1; /*mid为向下取整,mid+1保证left能够向右移动直至退出循环 */
if(X==L->Data[mid]) break;
}
if(left==right){
if(L->Data[left]!=X) return NotFound;
else return left;
}
else return mid;
}
二分查找
最新推荐文章于 2023-05-28 13:59:52 发布