ACM二分查找模板

int main(){
    == key 
    int m;
    while ( l <= r ) {
        m = ( l + r ) >> 1;
        if ( x[m] == key ) return m;
        else if ( key > x[m] ) 
            l = m + 1;
        else
            r = m - 1; 
    }

    >= key 中最小的
    int ret;
    while ( l <= r ) {
        m = ( l + r ) >> 1;
        if ( x[m] >= key ) {
            ret = m;
            r = m - 1;  
        } else
            l = m + 1;
    }

    <= key 中最大的
    int ret;
    while ( l <= r ) {
        m = ( l + r ) >> 1;
        if ( x[m] <= key ) {
            ret = m;
            l = m + 1;  
        } else
            r = m - 1;
    }

}
原文地址:https://www.cnblogs.com/bryce1010/p/9386996.html