Hash 整数数组的哈希函数

Hash 整数数组的哈希函数,hash,Hash,对于整数数组,什么样的散列函数比较好? 例如,我有两个数组[1,2,3]和[1,5]。我应该采用什么散列函数来分隔这两个数组? 我曾想过在将每个元素提升到2的幂次后将其相加,但由于多次乘法,这会带来很大的成本。这种情况下有没有简单的散列函数?对于特定的数据集,只需从倒数第二项中减去一项,即可得到一个完美的最小散列,并生成桶0和桶1:-) 更严重的是,一个好的散列函数的选择在很大程度上取决于数据的种类,因此应该加以考虑。如果不知道要存储的数据的属性,就很难提出建议 首先,我只需选择一个任意函数,例

对于整数数组,什么样的散列函数比较好? 例如,我有两个数组[1,2,3]和[1,5]。我应该采用什么散列函数来分隔这两个数组? 我曾想过在将每个元素提升到2的幂次后将其相加,但由于多次乘法,这会带来很大的成本。这种情况下有没有简单的散列函数?

对于特定的数据集,只需从倒数第二项中减去一项,即可得到一个完美的最小散列,并生成桶0和桶1:-)

更严重的是,一个好的散列函数的选择在很大程度上取决于数据的种类,因此应该加以考虑。如果不知道要存储的数据的属性,就很难提出建议

首先,我只需选择一个任意函数,例如添加数组中的所有项,然后将数组长度添加到该函数中,并将其模化为某个值:

numbuckets = 97
bucket = array.length() % numbuckets
for index in range (array.length()):
    bucket = (bucket + array[index]) % numbuckets
然后检查结果(跨越大量真实数据集),以确保没有太多碰撞。如果有,请选择其他功能


这与优化是一样的:测量,不要猜测!实际监控冲突和使用情况,并在情况恶化时采取行动。

谢谢,对于我当前的用例,它看起来很好。但如果我需要进一步放大,我想可能会有更多的碰撞