BKDRhash实现

时间:2023-03-09 14:17:17
BKDRhash实现

参考了一些有关于哈希算法的博客,里面都有提到BKDR哈希算法,在博客:各种字符串Hash函数中有对各种hash算法进行测试,测试关于哈希冲突,以及散列的质量,得到的结果可以参考以上博文。

BKDRhash实现:

unsigned int BKDRHash1(char *str)
{
unsigned int seed = 131; // 31 131 1313 13131 131313 etc..
unsigned int hash = 0; while (*str) {
hash = hash * seed + (*str++);
} return (hash & 0x7FFFFFFF); // long int 的上限值,这里可以替换为得到的数据与散列表的大小NHASH进行mod运算
} unsigned int BKDRhash2(char *p) { unsigned int hash = 0;
unsigned int seed = 131; // 31 131 1313 13131 131313 etc.. while (*p) {
hash = hash * seed + (*p++);
} return hash % NHASH; // 散列表的大小
}

2016/11/6