你的数据量有多大? 若采用2^16的值域,平均每个值有多少重复?如果超过32个,可以考虑采用
值域为2^20..2^24的Hash表(2^32实在太大了,内存都装不下,还怎么查?).
如果允许,建议采用多个Hash表的方法,每个Hash表采用的Hash算法都不同,这样两个16Bit
值域的Hash表的完全冲突概率可以和一个32bit的Hash表相当.
例子:
Hash1[0..65535,1..10] Hash2[0..65535,1..10]
查找时将两个Hash表的结果都取出来,然后求它们的交集(相当于从一个32Bit的Hash表中进行
查询),如果只有一个结果,就OK了,否则... 否则再增加Hash表的个数,直到不可能发生冲突为止!
(我估计最多采用4个16Bit的Hash表就不会发生冲突了)