我目前覆盖哈希和哈希表,我想知道为什么像被认为是不好的散列函数(伪)以下:为什么这是一个糟糕的散列函数?
function hash(String_t word, Int table_size)
i = randomly generated number with 0<i<table_size
j = ASCII code of the first letter of word
return i * j % table_size
假设的i
价值可能在函数调用存储为了实现一致性(例如使用C中的static
关键字将i
的值存储在函数范围内),为什么这是一个糟糕的哈希函数?
”散列值仅由第一个字母确定“。散列值是不是由第一个字母和随机值决定的?另外,d = gcd(i,表格大小)是什么意思? – JavascriptLoser
@PythonNewb:取决于你如何看待它!按照我观察它的方式,随机值在开始时选择,然后固定。在该值固定后,如果且仅当它们具有相同的第一个字母时,两个单词才会发生碰撞。 Gcd是最大的公约数。该属性来自模块算术。 – TheGreatContini