在有序向量v[lo,hi)中返回不大于e的最后一个元素的位置。
- 若e<v[lo],则返回lo-1
- 若e>v[hi-1],则返回hi-1
- 当向量中存在多个e时,返回最后一个e的位置。
int binarySearch(int vec[], int e, int lo, int hi)
{
while(lo < hi)
{
int mid = (lo + hi) >> 1;
(e < vec[mid]) ? hi = mid : lo = mid + 1;
}
return --lo;
}