This commit is contained in:
krahets
2023-08-21 19:32:37 +08:00
parent 02ac0aa9fe
commit fb9ace3a95
62 changed files with 291 additions and 254 deletions
+3 -3
View File
@@ -4,7 +4,7 @@ comments: true
# 10.1   二分查找
「二分查找 binary search」是一种基于分治思想的高效搜索算法。它利用数据的有序性,每轮减少一半搜索范围,直至找到目标元素或搜索区间为空为止。
「二分查找 binary search」是一种基于分治策略的高效搜索算法。它利用数据的有序性,每轮减少一半搜索范围,直至找到目标元素或搜索区间为空为止。
!!! question
@@ -14,7 +14,7 @@ comments: true
<p align="center"> 图:二分查找示例数据 </p>
对于上述问题,我们先初始化指针 $i = 0$ 和 $j = n - 1$ ,分别指向数组首元素和尾元素,代表搜索区间 $[0, n - 1]$ 。请注意,中括号表示闭区间,其包含边界值本身。
如下图所示,我们先初始化指针 $i = 0$ 和 $j = n - 1$ ,分别指向数组首元素和尾元素,代表搜索区间 $[0, n - 1]$ 。请注意,中括号表示闭区间,其包含边界值本身。
接下来,循环执行以下两个步骤:
@@ -625,7 +625,7 @@ comments: true
如下图所示,在两种区间表示下,二分查找算法的初始化、循环条件和缩小区间操作皆有所不同。
“双闭区间”表示法中,由于左右边界都被定义为闭区间,因此指针 $i$ 和 $j$ 缩小区间操作也是对称的。这样更不容易出错。因此,**我们通常采用“双闭区间”的写法**。
由于“双闭区间”表示中的左右边界都被定义为闭区间,因此指针 $i$ 和 $j$ 缩小区间操作也是对称的。这样更不容易出错**因此一般建议采用“双闭区间”的写法**。
![两种区间定义](binary_search.assets/binary_search_ranges.png)