使用开放地址散列给出两个散列函数

时间:2015-03-17 13:49:13

标签: data-structures hash

我有一系列元素:S = {1, 17, 8, 12, 9, 10, 8}我必须通过散列函数h1(x) = xmod7h2(x) = 1 + (xmod3)以及m = 7进行哈希处理。

h1(1) = 1mod7 = 1   -> [   ][ 1 ][   ][   ][   ][   ][   ]
h1(17) = 17mod7 = 3 -> [   ][ 1 ][   ][17 ][   ][   ][   ]

现在h1(8) = 8mod7 = 1但是这会导致冲突,所以我必须使用第二个散列函数来提供h2(8) = 1 + (8mod3) = 3,但这也会导致碰撞,那么我应该在哪里存储元素8?感谢

1 个答案:

答案 0 :(得分:0)

你可以:

  • 如果在第二个哈希中发生冲突,则链对象

或 -

  • 选择一系列哈希函数,而不仅仅是两个。如果i函数发生冲突,请使用i+1函数进行哈希处理。阅读有关双重散列here
  • 的更多信息