【C++】二分查找算法

1.题目

2.算法思路

暴力解法:可以将数组遍历一遍,就可以找到。时间复杂度为O(n)。不算太差,可以接受。

但是有更优秀的解法:

就是二分查找算法。

算法的特点:我们所查找的"数组"具有二段性。这里的二段性不一定有序。而是我们可以找到某种规律,可以让我们把数组分为两部分,然后舍掉一部分,对另一部分进行求解。

本题中数组的有序就是二段性的一种体现。

在后面的题目中,我会举一个无序的但是可以用二分查找算法解决的题目。

3.代码

cpp 复制代码
class Solution {
public:
    int search(vector<int>& nums, int target) {
        int left=0,right=nums.size()-1;
        while(left<=right){
            int mid=left+(right-left)/2;//防止溢出
            if(nums[mid]>target) right=mid-1;
            else if(nums[mid]<target) left=mid+1;
            else return mid;   
        }
        return -1;
    }
};

时间复杂度:O(longn)。

4.算法模板

相关推荐
聪明蛋子哟1 小时前
不仅仅是向量检索:结合知识图谱与Tool Calling的混合增强生成(Hybrid RAG)方案
人工智能·算法·知识图谱
Pniubi1 小时前
力扣55跳跃游戏(贪心)
算法·leetcode·游戏
jyyyx的算法博客1 小时前
传球游戏【思维】
算法
FL16238631291 小时前
关于2026年南昌大学811信号与系统最后一题电路系统解题思路
算法
殷色玫瑰1 小时前
C++ STL:map 与 set 详解——从底层红黑树到实际应用
c语言·数据结构·c++·算法·visualstudio·rpc
行者全栈架构师2 小时前
【鸿蒙心迹】鸿蒙网络请求架构实战——@ohos.net.http 到 Axios 封装、拦截器与统一错误处理(HarmonyOS 7.x)
前端·算法·架构
小宋10212 小时前
OpenTelemetry GenAI可观测性实战:串起模型、工具、Token与错误
java·人工智能·算法·贪心算法
嫂子开门我是_我哥2 小时前
青少年抑郁、焦虑、失眠与自杀相关表现的症状联系:一篇网络分析论文所使用的算法深度解读
论文阅读·算法·论文笔记
渊鱼L2 小时前
CAD随机颗粒插件2D V2.0 更新说明
算法
Lazionr2 小时前
unordered_map和unordered_set的使用
开发语言·c++·算法