二分查找

// 查找 a 数组的 [head, tail] 单调序列中 t 第一次出现的位置
int query(const int &t, int head, int tail){
    while(head <= tail){
        int mid = (head + tail) >> 1;
        if(t > a[mid])head = mid + 1;
        if(t < a[mid])tail = mid - 1;
        if(t == a[mid])tail = mid;
        if(head >= tail && a[mid] == t)return mid;
    }
    return -1;      // -1 表示未找到
}
posted @ 2021-08-15 23:24  Mojibake  阅读(28)  评论(0编辑  收藏  举报
知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。