This commit is contained in:
krahets
2023-08-04 05:25:00 +08:00
parent 014ad545de
commit 63f09480fa
137 changed files with 8999 additions and 1143 deletions

View File

@ -18,7 +18,7 @@
<link rel="prev" href="../">
<link rel="next" href="../binary_search_edge/">
<link rel="next" href="../binary_search_insertion/">
<link rel="icon" href="../../assets/images/favicon.png">
@ -1769,6 +1769,8 @@
@ -1891,14 +1893,50 @@
<li class="md-nav__item">
<a href="../binary_search_insertion/" class="md-nav__link">
<span class="md-ellipsis">
10.2. &nbsp; 二分查找插入点
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../binary_search_edge/" class="md-nav__link">
<span class="md-ellipsis">
10.2. &nbsp; 二分查找边界
10.3. &nbsp; 二分查找边界
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@ -1916,7 +1954,7 @@
<span class="md-ellipsis">
10.3. &nbsp; 哈希优化策略
10.4. &nbsp; 哈希优化策略
</span>
@ -1936,7 +1974,7 @@
<span class="md-ellipsis">
10.4. &nbsp; 重识搜索算法
10.5. &nbsp; 重识搜索算法
</span>
@ -1956,7 +1994,7 @@
<span class="md-ellipsis">
10.5. &nbsp; 小结
10.6. &nbsp; 小结
</span>
@ -3379,7 +3417,10 @@
<p class="admonition-title">Question</p>
<p>给定一个长度为 <span class="arithmatex">\(n\)</span> 的数组 <code>nums</code> ,元素按从小到大的顺序排列,数组不包含重复元素。请查找并返回元素 <code>target</code> 在该数组中的索引。若数组不包含该元素,则返回 <span class="arithmatex">\(-1\)</span></p>
</div>
<p>对于上述问题,我们先初始化指针 <span class="arithmatex">\(i = 0\)</span><span class="arithmatex">\(j = n - 1\)</span> ,分别指向数组首元素和尾元素,代表搜索区间 <span class="arithmatex">\([0, n - 1]\)</span> 。其中,中括号表示“闭区间”,即包含边界值本身。</p>
<p><img alt="二分查找示例数据" src="../binary_search.assets/binary_search_example.png" /></p>
<p align="center"> Fig. 二分查找示例数据 </p>
<p>对于上述问题,我们先初始化指针 <span class="arithmatex">\(i = 0\)</span><span class="arithmatex">\(j = n - 1\)</span> ,分别指向数组首元素和尾元素,代表搜索区间 <span class="arithmatex">\([0, n - 1]\)</span> 。请注意,中括号表示闭区间,其包含边界值本身。</p>
<p>接下来,循环执行以下两个步骤:</p>
<ol>
<li>计算中点索引 <span class="arithmatex">\(m = \lfloor {(i + j) / 2} \rfloor\)</span> ,其中 <span class="arithmatex">\(\lfloor \space \rfloor\)</span> 表示向下取整操作。</li>
@ -3391,12 +3432,9 @@
</li>
</ol>
<p>若数组不包含目标元素,搜索区间最终会缩小为空。此时返回 <span class="arithmatex">\(-1\)</span></p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:8"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><input id="__tabbed_1_4" name="__tabbed_1" type="radio" /><input id="__tabbed_1_5" name="__tabbed_1" type="radio" /><input id="__tabbed_1_6" name="__tabbed_1" type="radio" /><input id="__tabbed_1_7" name="__tabbed_1" type="radio" /><input id="__tabbed_1_8" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">&lt;0&gt;</label><label for="__tabbed_1_2">&lt;1&gt;</label><label for="__tabbed_1_3">&lt;2&gt;</label><label for="__tabbed_1_4">&lt;3&gt;</label><label for="__tabbed_1_5">&lt;4&gt;</label><label for="__tabbed_1_6">&lt;5&gt;</label><label for="__tabbed_1_7">&lt;6&gt;</label><label for="__tabbed_1_8">&lt;7&gt;</label></div>
<div class="tabbed-set tabbed-alternate" data-tabs="1:7"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><input id="__tabbed_1_4" name="__tabbed_1" type="radio" /><input id="__tabbed_1_5" name="__tabbed_1" type="radio" /><input id="__tabbed_1_6" name="__tabbed_1" type="radio" /><input id="__tabbed_1_7" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">&lt;1&gt;</label><label for="__tabbed_1_2">&lt;2&gt;</label><label for="__tabbed_1_3">&lt;3&gt;</label><label for="__tabbed_1_4">&lt;4&gt;</label><label for="__tabbed_1_5">&lt;5&gt;</label><label for="__tabbed_1_6">&lt;6&gt;</label><label for="__tabbed_1_7">&lt;7&gt;</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><img alt="二分查找步骤" src="../binary_search.assets/binary_search_step0.png" /></p>
</div>
<div class="tabbed-block">
<p><img alt="binary_search_step1" src="../binary_search.assets/binary_search_step1.png" /></p>
</div>
<div class="tabbed-block">
@ -4059,13 +4097,13 @@
<a href="../binary_search_edge/" class="md-footer__link md-footer__link--next" aria-label="下一页: 10.2. &amp;nbsp; 二分查找边界" rel="next">
<a href="../binary_search_insertion/" class="md-footer__link md-footer__link--next" aria-label="下一页: 10.2. &amp;nbsp; 二分查找插入点" rel="next">
<div class="md-footer__title">
<span class="md-footer__direction">
下一页
</span>
<div class="md-ellipsis">
10.2. &nbsp; 二分查找边界
10.2. &nbsp; 二分查找插入点
</div>
</div>
<div class="md-footer__button md-icon">