我正在使用双散列方法实现整数的散列类。输入将是随机整数,可以是正数或负数。
我的问题是如何计算负整数的哈希值?
这是方法:
hash function 1 h: h(k) = k mod (p)
hash function 2 s(k)= p –2 – (k mod(p-2))
p = table size, k = key
计算h(k)后,如果没有碰撞,就会插入到它的位置。如果发生冲突,我将计算 (h(k) + s(k)) mod p 并将密钥存储在计算的结果值中。
所以我的问题是,如果键是负整数,我应该在散列之前取它的绝对值(使其为正)吗?或者还有其他方法吗?