(二分查找)LowerBound

在包含size个元素的,从小到大顺序的int数组a里查找比给定整数p小的,下标最大的元素,找不到返回-1

题解:

int LowerBound(int a[],int size,int p)

{

  int begin=0;

  int end=size-1;

  int pos=-1;

  while(begin>=end){

    int mid=(begin+end)/2;

    if(p>a[mid]){

      p=a[mid];

扫描二维码关注公众号,回复: 9356581 查看本文章

      begin=mid+1;

    }else{

      end=mid-1;

    }

  }

  return pos;

}

将int mid=(begin+end)/2;改成int mid=begin(end-begin)/2;

防止过大溢出

猜你喜欢

转载自www.cnblogs.com/lijiahui-123/p/12350524.html