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;
    }

}
posted @ 2018-03-13 14:56  Bryce1010  阅读(104)  评论(0编辑  收藏  举报