版本A

Rank mi = (lo + hi) >> 1;
if (e < A[mi])
    hi = mi;
else if (A[mi] < e)
    lo = mi + 1;
else
    return mi;

版本B

while (1 < hi-lo){
    Rank mi = (lo + hi) >> 1;
    (e < A[mi]) ? hi = mi : lo = mi;//深入[lo, mi) || [mi, hi)段继续查找
}

版本C

while (lo < hi){
    Rank mi = (lo + hi) >> 1;
    (e < A[mi]) ? hi = mi : lo = mi + 1;//[lo,mi) || (mi, hi)
}