switch 二分查找

template
//在有序向量区间[lo, hi)内查找元素e
static Rank binSearch(T* A, T const& e, Rank lo, Rank hi) {
    while (lo < hi) {
        Rank mi = (lo + hi) >> 1;  //以中点为轴点
        // 使用一个临时变量来存储比较结果,方便在switch中使用
        int comparisonResult = (e < A[mi])? -1 : ((A[mi] < e)? 1 : 0); 
        switch (comparisonResult) {
        case -1:
            hi = mi;  //深入前半段[lo, mi)继续查找
            break;
        case 1:
            lo = mi + 1;  //深入后半段(mi, hi)
            break;
        case 0:
            return mi;  //在mi处命中
        }
    }
    return -1;  //查找失败
}搞笑的

 

你可能感兴趣的:(C++学习记录,c++)