“数字大冒险:探索二分查找的神奇之旅“

前言

作者:小蜗牛向前冲

专栏小蜗牛算法之路

 专栏介绍"蜗牛之道,攀登大厂高峰,让我们携手学习算法。在这个专栏中,将涵盖动态规划、贪心算法、回溯等高阶技巧,不定期为你奉上基础数据结构的精彩算法之旅。一同努力,追逐技术的星辰大海。"

目录

一、二分查找 

二、二分的朴素模板

1、例题1

2、朴素模板

三、二分的万能模版

1、例题2

2、查找区间左端点

3、查找区间右端点

4、万能模板 

5、题目练习


一、二分查找 

二分查找是一种在有序数组中查找目标值的算法。它通过反复将待查找区间分成两部分并检查中间元素来进行查找,以缩小搜索范围,直到找到目标值或确定目标值不存在为止。这种算法的时间复杂度为 O(log n),其中 n 是数组的元素个数。

对于二分查找,我们简单的理解就是通过二段性,不断的排除不属于目标值的的算法

而为什么我们不三分,四分呢?

尽管三分、四分等算法在某些特定情况下可能会有所优势,但由于二分查找已经被广泛证明为高效且简单的解决方案,因此通常情况下选择二分更为合适。(这里和数学期望有关就不和大家证明了)

二分算法看起来非常简单,但是他的细节是非常多,而且查看能力非常强大。

比如当我们要查找2^32(42亿多),如果我们要暴力查找就要查找42亿多次,但是二次就只要查找32次。

为了解决二分细节太多问题(特别是在处理复杂问题,对边界情况的处理)

二、二分的朴素模板

1、例题1

这里我们直接用力扣上的一道题目来引出:

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1


示例 1:

输入: nums = [-1,0,3,5,9,12], target = 9
输出: 4
解释: 9 出现在 nums 中并且下标为 4

示例 2:

输入: nums = [-1,0,3,5,9,12], target = 2
输出: -1
解释: 2 不存在 nums 中因此返回 -1

提示:

  1. 你可以假设 nums 中的所有元素是不重复的。
  2. n 将在 [1, 10000]之间。
  3. nums 的每个元素都将在 [-9999, 9999]之间。

这里是非常经典的二分运用,在一个有序的数组中(有序就说明有二段性) ,让我们排查目标值target,暴力就不提了,那二分是如何解题的。

评论 38
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小蜗牛~向前冲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值