【发布时间】:2016-05-19 15:17:07
【问题描述】:
我正在为大小为 10(索引 0-9)的哈希表制作哈希函数,并使用中方方法对元素进行哈希处理。 问题是我很困惑我应该使用 1 个中间数字还是 2 个数字然后取模 10。 问题是如果我选择取 2 个中间数字然后取 mod 10,如果平方数有 3 个数字,此方法将失败。那我会取哪两个数字? 如果我选择有 1 个中间数字,那么当平方数有偶数位数时,我将无法取中间数字。我知道在这种情况下,中间两个元素都是由原始数字的所有元素的贡献组成的。 现在,我将使用第 {floor(n/2+1)} 个数字。这种方式适用于三位数的平方数,并且当平方数有偶数时。位数,它取中间两位的后一位。 我想知道这样做更有效的方法是什么? 谢谢。
【问题讨论】:
-
你的做法是合理的。假设平方数有数字A B C D,说取“C D”是没有意义的,因为
% 10之后你反正只有D,所以直接取。如果有奇数位,请清楚地使用中间一位。
标签: data-structures hash hashtable