BKDRhash算法
(2018-05-30 16:50:26)
标签:
bkdrhash |
分类: Algorithm |
BKDRHash算法是字符串hash算法。是一种简单快捷的hash算法。函数也是采用这种hash算法。
使用100000个不同字符串产生的冲突数,大概在0~3波动,使用100百万不同的字符串,冲突数大概110+范围波动。
算法来自于Brian Kernighan and Dennis
Ritchie合著的C语言编程一书。函数用一个特殊的种子集合构建哈希函数
该算法代码:
HashMap在求位置索引时,则用与运算,且这里一般先用hash&0x7FFFFFFF后,再对length取模,&0x7FFFFFFF的目的是为了将负的hash值转化为正值,因为hash值有可能为负数,而&0x7FFFFFFF后,只有符号外改变,而后面的位都不变。
return (hash & 0x7FFFFFFF) % Length;