【发布时间】:2014-03-16 18:49:53
【问题描述】:
我不确定将“字典”散列到表中的最佳方法。
词典有61406个单词,我通过SizeOFDictionary/.75判断超载
这给了我 81874 个桶。
我通过我的哈希函数(通用随机算法)运行它,并且有 31690 个桶被用完。还有 50 几千个是空的。最大的桶只包含 10 个单词。
我的问题:这些数字足以满足哈希项目的需求吗?我不熟悉我想要实现的目标,对我来说,似乎 50 几千是很多空桶。
这是我的哈希函数。
private void hashingAlgorithm(String word)
{
int key = 1;
//Multiplying ASCII values of string
//To determine the index
for(int i = 0 ; i < word.length(); i++){
key *= (int)word.charAt(i);
//Accounting for integer overflow
if(key<0)
key*=-1;
}
key %= sizeOfTable;
//Inserting into the table
table[key].addToBucket(word);
}
【问题讨论】:
-
String.hashCode()有什么问题? -
我应该创建自己的哈希算法。这是一个班级项目。
-
好的,这是一个哈希算法。但这对我来说不是很好。至少将字符值与您选择的整数相乘,而不是乘以键,在每一步将它们添加到键和模中。
-
@Fallen,我会这样做的,你能告诉我选择我选择的整数的目的是什么吗?
-
2 * 3 == 3 * 2 但是 (2*10+3) != (3*10+2) 。 . .