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种可能。

posted @ 2020-03-26 10:10  夜里寻星  阅读(1665)  评论(0)    收藏  举报