This commit is contained in:
krahets
2023-08-22 13:50:24 +08:00
parent 77b90cd19b
commit b70b7c9e75
67 changed files with 580 additions and 580 deletions
+4 -4
View File
@@ -3474,9 +3474,9 @@
</ol>
<p>哈希表的结构改良方法主要包括链式地址和开放寻址。</p>
<h2 id="621">6.2.1 &nbsp; 链式地址<a class="headerlink" href="#621" title="Permanent link">&para;</a></h2>
<p>在原始哈希表中,每个桶仅能存储一个键值对。「链式地址 separate chaining」将单个元素转换为链表,将键值对作为链表节点,将所有发生冲突的键值对都存储在同一链表中。图展示了一个链式地址哈希表的例子。</p>
<p>在原始哈希表中,每个桶仅能存储一个键值对。「链式地址 separate chaining」将单个元素转换为链表,将键值对作为链表节点,将所有发生冲突的键值对都存储在同一链表中。图 6-5 展示了一个链式地址哈希表的例子。</p>
<p><img alt="链式地址哈希表" src="../hash_collision.assets/hash_table_chaining.png" /></p>
<p align="center">链式地址哈希表 </p>
<p align="center"> 6-5 &nbsp; 链式地址哈希表 </p>
<p>链式地址下,哈希表的操作方法包括:</p>
<ul>
@@ -4597,9 +4597,9 @@
<li><strong>插入元素</strong>:通过哈希函数计算数组索引,若发现桶内已有元素,则从冲突位置向后线性遍历(步长通常为 <span class="arithmatex">\(1\)</span> ),直至找到空位,将元素插入其中。</li>
<li><strong>查找元素</strong>:若发现哈希冲突,则使用相同步长向后线性遍历,直到找到对应元素,返回 <code>value</code> 即可;如果遇到空位,说明目标键值对不在哈希表中,返回 <span class="arithmatex">\(\text{None}\)</span></li>
</ul>
<p>图展示了一个在开放寻址(线性探测)下工作的哈希表。</p>
<p> 6-6 展示了一个在开放寻址(线性探测)下工作的哈希表。</p>
<p><img alt="开放寻址和线性探测" src="../hash_collision.assets/hash_table_linear_probing.png" /></p>
<p align="center">开放寻址和线性探测 </p>
<p align="center"> 6-6 &nbsp; 开放寻址和线性探测 </p>
<p>然而,线性探测存在以下缺陷:</p>
<ul>