C++ 二分查找

lowerbound: 

int lowerbound(int a[],int q)
{​
    int l = 1,r = n,ans = -1;
    while(l <= r)
    {
        int m = (l + r) / 2;
        if(check(a,m,q))//根据题意确定
        {
            r = m - 1;
            ans = m;
        }
        else    l = m + 1;
    }
    return ans;
}

upperbound:

​
int upperbound(int a[],int q)
{​
    int l = 1,r = n,ans = -1;
    while(l <= r)
    {
        int m = (l + r) / 2;
        if(check(a,m,p))//根据题意确定
        {
            l = m + 1;
            ans = m;
        }
        else    r = m - 1;
    }
    return ans;
}

你可能感兴趣的:(算法,c++,数据结构)