我们目前正在处理哈希函数的课程。我们的讲师要求我们在互联网上找一个哈希函数,与我们在代码中使用过的两个进行比较。
第一个:
int HashTable::hash (string word)
// POST: the index of entry is returned
{ int sum = 0;
for (int k = 0; k < word.length(); k++)
sum = sum + int(word[k]);
return sum % SIZE;
}
其次:
int HashTable::hash (string word)
{
int seed = 131;
unsigned long hash = 0;
for(int i = 0; i < word.length(); i++)
{
hash = (hash * seed) + word[i];
}
return hash % SIZE;
}
如果SIZE为501(散列表的大小),输入来自一个包含20,000多个单词的文本文件。
我看到了这篇问题,其中有几个代码示例,但我不确定在哈希函数中应该寻找什么。 如果我理解正确,在我的情况下,哈希将输入(字符串)进行数学计算以分配一个数字并将其插入表中。 这个过程是为了增加搜索列表的速度?
如果我的逻辑正确,是否有人有一个涉及字符串的不同哈希函数的好例子或资源? 或者甚至编写自己有效哈希函数的过程。