可以解释一下吗
给定大小为N = 11的散列表数组,并使用散列函数 - h(x)= 3 x + 7 mod N
与线性探测一起,以下操作顺序是 进行:
插入5,插入15,插入4,插入8,插入7,插入12
哈希表的最终状态是什么?
按我的逻辑
h(5)=(3 * 5)+(7 mod 11)= 15 + 7 = 22 所以放在表[0]中
h(15)=(3 * 15)+(7 mod 11)= 45 + 7 = 52 所以放在数组[0] ..不能放入表[1]
等
但显然我的方法是错的。 - 例如h(15)在表[8]中排名15
我没有考虑到什么?
修改
忘记了mod 11的答案!简单的错误。
h(5)=((3 * 5)+ 7)mod 11 = 15 + 7 = 22 - > 22 mod 11 = 0 所以放在表[0]中
h(15)=((3 * 15)+ 7)mod 11 = 45 + 7 = 52 - > 52 mod 11 = 8 所以放在数组[8]
答案 0 :(得分:2)
我认为你的哈希函数应该是(3x + 7)mod N,而不是3x +(7 mod N)。