除法散列法散列值问题
除法散列法似乎通过取k除以m的余数,来将关键字k映射到m个槽的某一个中去,亦即,散列函数为:
h(k)=k mod m
当应用除法散列时,要注意m的选择。例如,m不应是2的幂,应为如果m=(2的p次)方,则 h(k)就是k的p个最低位数字。
问题是:对任意进制(s)的关键字k,m=(x的p次方),那么关键字k第几位(P)以前的值将不影响k的散列值?
x如果不能整除进制,则p无确定值。
以下是x可以整除进制的情况:
P=p-X+1,其中X的值可通过以下公式确定:s=(x的X次方)×Y。
P=P<=1?1:P
例如:
16进制:如果m=16(x=2,p=4),则第一位以前所有值不影响散列值。【X=4,P=4-4+1】
10进制:如果m=16(x=2,p=4),则第4位以前的值不影响散列值。【X=1,P=4-1+1=4】
20进制:如果m=8 (x=2,p=3 ), 则对第二位以前的值不影响散列值。【X=2,P=4-2+1=4】
redcreen