我想构建一个哈希表,用于查找 1 到 15 个字节的字节序列(字符串)中的键。
我想存储一个整数值,所以我想一个用于散列的数组就足够了。我很难概念化如何构造一个哈希函数,以便给定的键将给出数组的索引。
任何帮助将不胜感激。
哈希中的最大条目数为:4081*15 + 4081*14 + ... 4081 = 4081((15*(16))/2) = 489720。
例如:
int table[489720];
int lookup(unsigned char *key)
{
int index = hash(key);
return table[index];
}
哈希函数有哪些好的选择,或者我将如何构建一个哈希函数?
Thanks.
为了散列 C 字符串,我一直使用这个函数(取结果 % 散列表的大小):
int hashstring(const char* s) {
int key = 0;
while (*s) {
key = key*37 + *s++;
}
return key;
}
我不记得最初是从哪里得到它的,但多年来它并没有让我失望。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)