我目前覆蓋哈希和哈希表,我想知道爲什麼像被認爲是不好的散列函數(僞)以下:爲什麼這是一個糟糕的散列函數?
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