夜深人静写算法(四十二)- 二分查找

本文详细介绍了线性枚举和二分查找这两种算法,特别是在线性枚举中针对不同问题的解决方案,以及二分查找的定义、应用和优化。文章通过实例解析了二分查找的迭代过程、细节和时间复杂度,同时提供了多种应用场景的源码示例,包括数组精确查找、模糊查找和单调函数的查找。

前言

  二分查找,又叫二分枚举是在一个单调有序的数组中查找某个元素的搜索算法。原理比较简单,基本说一遍就知道是怎么一回事。然而,实际过程中,很容易写错,比如:
  1)左区间是加一还是不加?
  2)右区间是减一还是不减?
  3)迭代的终止条件怎么写?
  4)为什么有时候会死循环?
  带着以上几个疑问,这篇文章将对二分查找的所有写法进行一个归纳总结。

一、线性枚举

1、线性枚举定义

  线性枚举指的就是遍历某个一维数组(顺序表)的所有元素,找到满足条件的那个元素并且返回,返回值可以是下标,也可以是元素本身。
  由于是遍历的,穷举了所有情况,所以一定是可以找到解的,一些资料上也称之为 暴力算法 (Brute Force)。接下来,我们通过一个例子来理解 线性枚举。

2、举例说明

  【例题1】给定一个单调不降的有序数组 a r r arr arr 和 一个值 x x

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

英雄哪里出来

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

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

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

打赏作者

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

抵扣说明:

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

余额充值