2014-09-11 73 views
2

什么是一个整数数组的好散列函数? 例如,我有两个数组[1,2,3]和[1,5]。我应该采用什么散列函数来分离这两个数组? 我想在将它提升到2的幂后将每个元素相加,但是由于多重乘法,这会产生很大的成本。这种情况下是否有简单的哈希函数?整数数组的散列函数

回答

3

对于特定数据集,只是减去一个从第二到最后一个项目,会给你一个完美的最小哈希,用:-)

产生更严重的是桶0和1,选择一个好的散列函数确实很大程度上依赖于这类数据,所以应该将其考虑在内。如果不知道要存储的数据的属性,很难提出建议。

numbuckets = 97 
bucket = array.length() % numbuckets 
for index in range (array.length()): 
    bucket = (bucket + array[index]) % numbuckets 

然后检查结果:

简单地通过选择任意的功能,例如添加的所有项目阵列中,然后加入所述阵列长度的是,并减少它模一些值开始 (跨很多真实数据集)以确保没有太多的冲突。如果有,请选择另一个功能。

这与优化相同:措施,不要猜测!其实显示器碰撞和使用情况,如果它变坏。

+0

谢谢,因为我目前的使用情况似乎很好。但如果我需要进一步扩展,我想我可能会碰到更多的冲突 – Chimba 2014-09-11 03:49:31