哈希表和处理冲突

| 假设哈希表表示为大小为7的数组。我们要存储由三个数字组成的字符串。主哈希键是第二位模7的数值。第二位哈希键是第三位模4的数值增加了一个。将以下字符串插入到最初为空的哈希表中:\“ 111 \”,\“ 222 \”,\“ 737 \”,\“ 323 \”和\“ 234 \”。 我的回复: 0-234 1-111 2-222 3-737 4-323 5- 6- 111; 1模7 = 1 222; 2 mod 7 = 2 737; 3 mod 7 = 3 323; 3 mod 4 +1 = 4 234; 4 mod 4 +1 = 4(0) 那是对的吗?     
已邀请:
您可能要提及您正在使用的哈希类型。根据您的描述,我认为这是杜鹃哈希。在这种情况下,您可以进行最后一次插入操作。在插入234之前,您需要:
0:
1: 111
2: 222
3: 737
4: 323
5:
6:
尝试用with1 with插入234给出键
3 mod 7 = 3
,但是3已经包含373。继续到
h2
,我们得到
4 mod 4 + 1 = 1
,但是1已经包含111。这时不再有哈希函数,因此我们在1处插入234并重新哈希111 。
0:
1: 234
2: 222
3: 737
4: 323
5:
6:
用ѭ1散列111再次给出1,13ѭ给出
1 mod 4 + 1 = 2
,但是2已经包含222,因此我们将111存储在2并重新哈希222,依此类推。在这种情况下,最终您会找到所有适合的键。如果它们的条目都不适合(即重新插入进入无限循环),则需要调整表的大小并使用新的哈希函数进行重新哈希处理。     
我不确定如果检查了第二个哈希键后仍然存在冲突,那么这个问题想让您做什么,但是我认为它是这样的: 111:1 mod 7 = 1 222:2 mod 7 = 2 737:3 mod 7 = 3 323:2 mod 7 = 2 =>碰撞:3 mod 4 +1 = 3 +1 = 4 234:3 mod 7 = 3 =>碰撞:4 mod 4 +1 = 0 +1 = 1 =>碰撞 如果您在第二次碰撞后前进一个,结果将是 0- 1-111 2-222 3-737 4-323 5-234 6- 7-     

要回复问题请先登录注册