記事一覧へ戻る

ハッシュ表探索法

初級エンジニア想定レベル |

ハッシュ表探索法とは、データを探すときに、キーから直接データの位置を計算して取り出す方式である。通常の探索では、配列の先頭から順番に比較していくが、ハッシュ表ではハッシュ関数と呼ばれる計算式によって、キーを配列の添字に変換し、その場所を直接参照する。そのため、平均的にはデータ数が増えても探索時間はほぼ一定となり、計算量はO(1)とされる。ただし、異なるキーが同じ添字に変換されることがあり、これを衝突という。衝突が起きた場合には、同じ場所にリストとしてつなぐ方法(チェイン法)や、別の空き場所を探して格納する方法(オープンアドレス法)などで処理する。衝突が多くなると探索に時間がかかり、最悪の場合は線形探索と同程度まで性能が低下することもある。試験では、ハッシュ表は高速だが衝突処理が必要である点と、2分探索と違ってデータが整列している必要がない点がよく問われる。