1.题目
给定一个有序向量A[0, n],在[lo, hi)区间内查找元素e,返回元素e的索引。
若有重复元素,或查找失败 “返回不大于e的最大元素” 。
2.数据结构与算法
algorithm:二分查找(版本C)
3.源代码
#include "stdafx.h"
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int search_v3(vector<int> v, int e, int lo, int hi){
//v:被查找向量 e:查找元素 [lo, hi):查找范围
while(lo < hi){
int mid = (lo + hi)/2;
if(e < v[mid])
hi = mid;
else
lo = mid + 1;
}
return --lo;
}
int main()