一、冲突产生原因
散列函数是一个压缩映象函数。关键码集合比散列表地址集合大得多。因此有可能经过散列函数的计算,把不同的关键码映射到同一个散列地址上,就会产生冲突。
二、处理冲突的方法之一—闭散列法,也称开地址法
1.线性探查法:
(1)方法概述
先用除留余数法计算散列地址 hash(key) = key % p
若发现冲突,则使用增量 i 探查空的散列地址,直至无冲突出现为止。
H0 = hash (key)
Hi = (H0 + i) % m, i =1, 2, …, m-1
例题:
(2)线性探查法平均搜索长度ASL
搜索成功的平均搜索长度 ASLsucc 是指找到表中已有表项的平均探查次数,是找到表中各个已有表项的探查次数的平均值。如:
2.二次探查法
(1)方法概述
先用除留余数法计算散列地址 hash(key) = key%p,若发现冲突,则使用增量 + i 2探查空的散列地址,直至无冲突出现为止。
H0 = hash(key)
Hi = (H0+i2) % m, Hi = (H0-i2)% m,