私は HashTable について読んでいて、ここで簡単に理解できる良いソースを見つけました。
しかし、ダブルハッシュ関数で混乱しました。ダブルハッシュ関数の詳細はこちら。
二重ハッシュは、衝突が発生したときにキーに 2 番目のハッシュ関数を適用するという考え方を使用します。2 番目のハッシュ関数の結果は、挿入する衝突点からの位置の数になります。
2 番目の関数には、いくつかの要件があります。
it must never evaluate to 0 must make sure that all cells can be probed
一般的な 2 番目のハッシュ関数は次のとおりです。 Hash2(key) = R - ( key % R ) ここで、R はテーブルのサイズより小さい素数です。
そして、これがダブルハッシュ関数のイメージです。
今、混乱が始まります。彼らがイメージで言っているように。49 はインデックス7
からの位置にある必要があります。[9]
実際の位置は[6]
、なぜ49を[0]
インデックスに配置したのですか? 他の残りの整数についても同じです。
空のインデックスがなくなるとどうなるでしょうか?