除法散列法散列值问题

除法散列法似乎通过取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】

posted @ 2011-05-03 17:02  redcreen  阅读(1940)  评论(0编辑  收藏  举报