设有n个d位数,每一位肯能有r种不同的符号,这r种不同的符号在各位上出现的频率不一定相同,可能在某些位上分布比较均匀,可将分布均匀的几位根据开散列的方式作为散列地址
散列冲突处理方法
闭散列法
一旦发生冲突,就去寻找下一个空的散列表地址,只要散列表足够大,空的散列地址总能知道
线性探查
插入时发现该位置的数据和要插入数据相等,不插入
产生冲突,依次查看其后的下一个桶,如果有空位置插入数据
二次探查
使用二次探查法,在表中寻找下一个空位置的公式是H(i)=(H0+i^2)%m,H(i)=(H0-i^2)%m
当表的长度为质数且转载因子不超过0.5时,新的表项一定能插入
双散列法
需要两个散列函数,当一个发生冲突时,利用下一个散列函数计算偏移量
载荷因子
a=填入表中的元素个数/散列表的长度
控制在0.7-0.8以下,超过0.8,查表时CPU缓存指数上升
开散列法