我有一个大小为m = 11
的数组,我的哈希函数是分区方法:h(k) = k mod m
我有一个整数k = 10
和10 mod 11 is -1
所以我应该把这个键放在数组中?我应该把这个密钥放在索引为10的插槽中?
请帮助我谢谢
编辑:为了得到我的答案,例如我有k = 10,22,31,4,15,28,17,88,59
阵列会是这样的吗?谢谢
10 9 8 7 6 5 4 3 2 1 0 index
10 31 59 17 28 4 15 88 22 keys
答案 0 :(得分:0)
通常情况下,10 mod 11是10,所以是的,你通常使用索引10.
编辑:概括:至少在通常定义的情况下,给定两个正输入,模数将始终产生正结果。因此,关于如何处理否定结果的问题对于正常定义并没有真正意义。
如果你真的有可能得到负面结果,我立即反应将转换为一种能产生合理结果的语言。如果你不能这样做,那么你可能想要通过将m
添加到负数来将值移动到正确的范围,直到得到[0..m]范围内的数字,这样它就适合mod
的正常定义,然后将其用作索引。