簡単な紹介
ハッシュテーブルは、(ハッシュテーブルとも呼ばれるハッシュテーブル)であり、直接、データ構造にアクセスするためのキー値(キー値)に基づい。換言すれば、キー値によってレコードにアクセスするためのテーブルに検索をスピードアップするための位置にマッピングされます。このマッピング関数は、呼び出されたハッシュ関数をストレージアレイが呼び出される記録、ハッシュテーブル。
保管場所を記録= F(鍵)
fが呼び出される場合も、ハッシュ法レコードを使用して、ハッシュ(ハッシュ関数)と呼ばれるハッシュ関数との対応関係は、連続記憶空間に格納され、この連続記憶空間またはハッシュテーブル(ハッシュ・テーブルと呼ばれますハッシュテーブル)。
ハッシュテーブルのハッシュテーブル(キー、値):
1. キーによって固定されたアルゴリズムは、いわゆるの両方の関数ハッシュ関数は、に変換される整数、
2.それはなり番号配列長のモジュロ、モジュロ結果として上の配列インデックス、
3. 値が格納されているので次のターゲットアレイのデジタルスペース。
明らかに左である配列を含む、アレイの各メンバー、ポインタ、リストの先頭を指し、もちろん、このリストは空である可能性があり、それは要素の多くであってもよいです。
私たちは行くために別のリストに割り当てられている要素のいくつかの特徴的な要素によると、だけでなく、これらの機能に応じて、右側のリストを見つけるし、リストから要素を見つけます。
ハッシュテーブルクエリ速度が非常に速く、ほとんどO(1)時間の複雑さです。ハッシュは、データコンテンツおよびデータ格納アドレス間のマッピング関係を見つけることです。
ハッシング:本方法に、前記素子アレイ。
ハッシュ衝突
ハッシュ後必然的に、のためのものであることを、問題につながるさまざまなキーワード、あなたが得ることが同じハッシュアドレスを、それが同じ配列のインデックスである、として知られている現象ハッシュ衝突。
だから、どのように我々は、紛争に対処するために行うのですか?
方法1オープニング・アドレス:この場所は、データを持っているように、その後、添字ハッシュ機能を持たない配列が得られ、データが充填され、システムの方法で別のスロットアレーを見つけます。
2.方法チェーン住所: 配列の保存されたリストを作成し、配列データをそのまま新たなデータ項目がリストに直接、衝突が発生したときにその結果、格納されていない場合は、配列の添字にいいます。
3.パブリック・オーバーフロー領域法:データの競合を保存する専用の特殊なストレージスペースの設立。このメソッドは、データ用とあまり競合して適しています。
4.ハッシュ再び(再ハッシング):競合が発生した場合にも、第三の使用第競合上の第2のハッシュ関数を用いて、第1のハッシュ関数を用いて、ハッシュ関数を複数用意......
ハッシュ関数
ハッシュアドレスは、競合の確率はハッシュ関数と密接に関係しています。以下は、私たちはハッシュアドレスを計算するために使用される機能を見て
(A)直接アドレス指定方法
であること、ハッシュアドレスの線形関数として、キーワードまたはキーワードを取りaddress(key) = a*key + b
、あなたが学校で生徒数が4000まで、2000年から知っているならば、それが可能なaddress(key) =key-2000
ハッシュアドレスとして使用。
(B)平方取中法
キーワードのための正方形の計算中間、その後、結果はハッシュ複数のアドレスの通りであった次のキーの文字列ならば、{421,423,436}
その結果は、その後二乗され{177241,178929,190096}
、中央の桁が取ることができる{72,89,00}
ハッシュアドレスとして。
(C)折り処理
セクションに分割キー、及びこれらの部分一緒に、特定の方法で形質転換されたアドレスハッシュを形成します。例えば、既知のブック番号SBN場合:8903-241-23
することができるaddress(key)=89+03+24+12+3
ハッシュアドレスとして使用。
(D)Conormalから試料に加え
ハッシュテーブルの既知の最大長さmは、可能性がある場合、M素数Pよりも大きくない最大取り、次いでキーワードモジュロ演算を、address(key)=key % p
。
更新します
参考ます。https://blog.csdn.net/eson_15/article/details/51138588 https://www.jianshu.com/p/5a2a5f6de440