二分查找基础

原理:每次拿需要查找的值(x)与数列的中值(mid)比较(有序数组),如果x大于mid,就将左边界记为mid,然后在右边继续比较:如果x小于mid,就将右边界记为mid,然后在右边进行比较,逐渐缩小查找范围。
两种查找方式,代码如下:
(1)返回左边第一个小于x的位置:
int search3(int x)
{
int l=-1,r=n;//数组是从0开始的
while(l+1<r)
{
int m=(l+r)/2;
if(a[m]>=x)r=m;
else l=m;
}
return l;
}
(2)返回右边第一个大于x的位置:
int search4(int x)
{
int l=-1,r=n;
while(l+1<r)
{
int m=(l+r)/2;
if(a[m]<=x)l=m;
else r=m;
}
return r;
}

posted @ 2021-07-04 16:10  Mrnaoketong  阅读(65)  评论(0)    收藏  举报