Hash表大小使用质数的原因


素数可以有效的减少hash冲突
设Hash表大小为size,并且size是一个合数,即size = a * n。当关键字key = b * n时,他们有公因子n。
有Hash公式:

hashcode = key%size = key - (key / size) * size = key - (b/a) * size

因为a和size都是不变的,所以hashcode只有b种可能,这样显然会增加冲突的概率。所以当一个关键字集合里的所有关键字都与Hash表大小有公因数n时,那么hashcode只有key/n种可能。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM