直接寻址法,浪费空间。
散列函数:
(1)除法函数:
h(k)=kmodm
m的选择:一个不太接近2的幂次的素数。
(2)乘法函数:
h(k)=m∗(kAmod1)
k乘以A之后取小数部分再乘以m.在这里m的选择不是重点。
通过散列函数将k映射到一个值最容易造成冲突。解决冲突的两种方法:
(1)链表法:顾名思义
(2)开放寻址法:
(a)线性探查:
h(k,i)=(h′(k)+i)modm
(b)二次探查:
h(k,i)=(h′(k)+c∗i+c∗i2)modm
(c)双重散列:
h(k,i)=(h1(k)+i∗h2(k))modm