|
|
@ -50,7 +50,7 @@
|
|
|
|
- **插入元素**:通过哈希函数计算桶索引,若发现桶内已有元素,则从冲突位置向后线性遍历(步长通常为 $1$ ),直至找到空桶,将元素插入其中。
|
|
|
|
- **插入元素**:通过哈希函数计算桶索引,若发现桶内已有元素,则从冲突位置向后线性遍历(步长通常为 $1$ ),直至找到空桶,将元素插入其中。
|
|
|
|
- **查找元素**:若发现哈希冲突,则使用相同步长向后进行线性遍历,直到找到对应元素,返回 `value` 即可;如果遇到空桶,说明目标元素不在哈希表中,返回 `None` 。
|
|
|
|
- **查找元素**:若发现哈希冲突,则使用相同步长向后进行线性遍历,直到找到对应元素,返回 `value` 即可;如果遇到空桶,说明目标元素不在哈希表中,返回 `None` 。
|
|
|
|
|
|
|
|
|
|
|
|
下图展示了开放寻址(线性探测)哈希表的键值对分布。根据此哈希函数,最后两位相同的 `key` 都会被映射到相同的桶。而通过线性探测,它们被依次存储在该桶以及之下的桶中。
|
|
|
|
下图展示了开放寻址(线性探测)哈希表的键值对分布。根据此哈希函数,最后两位相同的 `key` 都会被映射到桶中相同位置并产生冲突。而通过线性探测,它们被依次存储在该桶内原冲突位置及其之后的位置中。
|
|
|
|
|
|
|
|
|
|
|
|
![开放寻址(线性探测)哈希表的键值对分布](hash_collision.assets/hash_table_linear_probing.png)
|
|
|
|
![开放寻址(线性探测)哈希表的键值对分布](hash_collision.assets/hash_table_linear_probing.png)
|
|
|
|
|
|
|
|
|
|
|
|