二分查找

    xiaoxiao2025-03-23  33

    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; }
    最新回复(0)