mirror of
https://github.com/krahets/hello-algo.git
synced 2026-07-11 15:06:07 +00:00
Simplify the contents of the sorting algorithms.
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
|
||||
为了缓解哈希冲突,一方面,**我们可以通过哈希表扩容来减小冲突概率**。极端情况下,当输入空间和输出空间大小相等时,哈希表就等价于数组了,每个 key 都对应唯一的数组索引,可谓“大力出奇迹”。
|
||||
|
||||
另一方面,**考虑通过优化哈希表的表示来缓解哈希冲突**,常见的方法有「链式地址」和「开放寻址」。
|
||||
另一方面,**考虑通过优化哈希表的表示来缓解哈希冲突**,常见的方法有「链式地址 Separate Chaining」和「开放寻址 Open Addressing」。
|
||||
|
||||
## 哈希表扩容
|
||||
|
||||
@@ -18,14 +18,14 @@
|
||||
|
||||
## 链式地址
|
||||
|
||||
在原始哈希表中,每个桶只能存储一个元素(即键值对)。**考虑将单个元素转化成一个链表,将所有冲突元素都存储在一个链表中**。
|
||||
在原始哈希表中,每个桶只能存储一个键值对。**链式地址考虑将单个元素转化成一个链表,将键值对作为链表结点,将所有冲突键值对都存储在一个链表中**。
|
||||
|
||||

|
||||
|
||||
链式地址下,哈希表操作方法为:
|
||||
|
||||
- **查询元素**:输入 key ,经过哈希函数得到数组索引,即可访问链表头结点,再通过遍历链表并对比 key 来查找键值对。
|
||||
- **添加元素**:先通过哈希函数访问链表头部,再将结点(即键值对)添加到链表头部即可。
|
||||
- **添加元素**:先通过哈希函数访问链表头结点,再将结点(即键值对)添加到链表即可。
|
||||
- **删除元素**:同样先根据哈希函数结果访问链表头部,再遍历链表查找对应结点,删除之即可。
|
||||
|
||||
链式地址虽然解决了哈希冲突问题,但仍存在局限性,包括:
|
||||
|
||||
Reference in New Issue
Block a user