mirror of
https://github.com/krahets/hello-algo.git
synced 2026-08-11 11:20:58 +00:00
deploy
This commit is contained in:
@@ -3474,9 +3474,9 @@
|
||||
</ol>
|
||||
<p>哈希表的结构改良方法主要包括链式地址和开放寻址。</p>
|
||||
<h2 id="621">6.2.1 链式地址<a class="headerlink" href="#621" title="Permanent link">¶</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 链式地址哈希表 </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 开放寻址和线性探测 </p>
|
||||
|
||||
<p>然而,线性探测存在以下缺陷:</p>
|
||||
<ul>
|
||||
|
||||
Reference in New Issue
Block a user