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;

本文详细探讨了三种版本的二分查找算法,包括平均查找长度和性能优化。其中,版本C的二分查找不仅具有ο(log2n)的时间复杂度,还能满足返回不大于特定元素的最大值的要求,适用于有序向量的高效查找。
最低0.47元/天 解锁文章
936

被折叠的 条评论
为什么被折叠?



