ハッシュテーブル

ハッシュ テーブルを使用すると、挿入、削除、検索操作の平均パフォーマンス O(1) の連想配列 (ディクショナリ) データ構造を実装できます。

以下は、nodeJS でのハッシュ マップの最も単純な実装の例です。

どのように機能するのでしょうか?手に注意してください:

  • ハッシュ マップ内には配列があります
  • 配列要素内には、リンクされたリストの最初のノードへのポインタがあります
  • メモリはポインタの配列(たとえば、65535 要素)に割り当てられます
  • ハッシュ関数を実装しており、辞書キーが入力であり、出力では何でもできますが、最終的には配列要素のインデックスを返します

録音の仕組み:

  • 入り口にはキーペアがあります –値
  • ハッシュ関数はキーごとにインデックスを返します
  • インデックスを使用して配列からリンク リスト ノードを取得する
  • キーと一致するかどうかを確認します
  • 一致する場合は、値を置き換えます
  • 一致しない場合は、必要なキーを持つノードが見つかるまで、次のノードに進みます。
  • それでもノードが見つからない場合は、リンク リストの最後にノードを作成します

キーによる検索の仕組み:

  • 入り口にはキーペアがあります –値
  • ハッシュ関数はキーごとにインデックスを返します
  • インデックスを使用して配列からリンク リスト ノードを取得する
  • キーと一致するかどうかを確認します
  • 一致する場合は値を返します
  • 一致しない場合は、必要なキーを持つノードが見つかるまで、次のノードに進みます。

なぜ配列内にリンクされたリストが必要なのでしょうか?ハッシュ関数の計算時に衝突が発生する可能性があるため。この場合、いくつかの異なるキーと値のペアが配列内の同じインデックスに配置されます。この場合、必要なキーを見つけるためにリンク リストが走査されます。

ソース

https://ru.wikipedia.org/wiki/ハッシュ テーブル
https://www.youtube.com/watch?v=wg8hZxMRwcw

ソースコード

https://gitlab.com/demensdeum/data Structures

Leave a Comment

Your email address will not be published. Required fields are marked *