前言
二分查找,又叫二分枚举是在一个单调有序的数组中查找某个元素的搜索算法。原理比较简单,基本说一遍就知道是怎么一回事。然而,实际过程中,很容易写错,比如:
1)左区间是加一还是不加?
2)右区间是减一还是不减?
3)迭代的终止条件怎么写?
4)为什么有时候会死循环?
带着以上几个疑问,这篇文章将对二分查找的所有写法进行一个归纳总结。
一、线性枚举
1、线性枚举定义
线性枚举指的就是遍历某个一维数组(顺序表)的所有元素,找到满足条件的那个元素并且返回,返回值可以是下标,也可以是元素本身。
由于是遍历的,穷举了所有情况,所以一定是可以找到解的,一些资料上也称之为 暴力算法 (Brute Force)。接下来,我们通过一个例子来理解 线性枚举。
2、举例说明
【例题1】给定一个单调不降的有序数组 a r r arr arr 和 一个值 x x
本文详细介绍了线性枚举和二分查找这两种算法,特别是在线性枚举中针对不同问题的解决方案,以及二分查找的定义、应用和优化。文章通过实例解析了二分查找的迭代过程、细节和时间复杂度,同时提供了多种应用场景的源码示例,包括数组精确查找、模糊查找和单调函数的查找。

订阅专栏 解锁全文
1239






