File tree Expand file tree Collapse file tree 1 file changed +30
-0
lines changed
Expand file tree Collapse file tree 1 file changed +30
-0
lines changed Original file line number Diff line number Diff line change 2525## 散列冲突¡
2626
2727* 散列冲突:` key1 != key2 ` 但 ` hash(key1) == hash(key2) `
28+
29+ 散列冲突会导致不同键值映射到散列表的同一个位置。为此,我们需要解决散列冲突带来的问题。
30+
31+ ### 开放寻址法
32+
33+ 如果遇到冲突,那就继续寻找下一个空闲的槽位。
34+
35+ #### 线性探测
36+
37+ 插入时,如果遇到冲突,那就依次往下寻找下一个空闲的槽位。(橙色表示已被占用的槽位,黄色表示空闲槽位)
38+
39+ ![ ] ( https://static001.geekbang.org/resource/image/5c/d5/5c31a3127cbc00f0c63409bbe1fbd0d5.jpg )
40+
41+ 查找时,如果目标槽位上不是目标数据,则依次往下寻找;直至遇见目标数据或空槽位。
42+
43+ ![ ] ( https://static001.geekbang.org/resource/image/91/ff/9126b0d33476777e7371b96e676e90ff.jpg )
44+
45+ 删除时,标记为 ` deleted ` ,而不是直接删除。
46+
47+ #### 平方探测(Quadratic probing)
48+
49+ 插入时,如果遇到冲突,那就往后寻找下一个空闲的槽位,其步长为 $1^2$, $2^2$, $3^2$, $\ldots$。
50+
51+ 查找时,如果目标槽位上不是目标数据,则依次往下寻找,其步长为 $1^2$, $2^2$, $3^2$, $\ldots$;直至遇见目标数据或空槽位。
52+
53+ 删除时,标记为 ` deleted ` ,而不是直接删除。
54+
55+ #### 装载因子(load factor)
56+
57+ $\text{load factor} = \frac{size()}{capacity()}$
You can’t perform that action at this time.
0 commit comments