我正在为一个大小为10 (索引0-9)的散列表创建一个散列函数,并使用正方形方法对元素进行散列。问题是我不明白我应该使用1个中间数字还是2个数字,然后取其中的mod 10。问题是,如果我选择取2位中间数,然后取mod 10,如果平方数有3位数,则此方法将失败。那我要取哪两位数呢?如果我选择1个中间数字,那么当平方数有偶数个数字时,我就会有问题。我知道在这种情况下,中间的两个元素都是由原始数字的所有元素的贡献构成的。现在,我使用第{floor(n/2+1)}个数字。这种方式适用于三位数的平方数,当平方数没有偶数时。在数字中,它取中间两位的后一位。我想知道做这件事有什么更有效的方法?谢谢。
发布于 2016-06-02 18:31:27
我学到的正确方法是,如果得到的正方形的长度是奇数,则使用1位数,如果是偶数,则使用中间的2位数。
https://stackoverflow.com/questions/37327507
复制相似问题