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

原文地址:https://www.cnblogs.com/qq952693358/p/6034875.html