正解は エ
このプログラムはハッシュテーブルの衝突解決法の一つである「ダブルハッシング法」を実装したものです。ハッシュテーブルとは、データを格納する際に特定の計算(ハッシュ関数)を用いて格納位置を決定するデータ構造です。 まず、配列hashArrayは5個の-1で初期化されます。その後、add関数で3、18、11の順に格納を試みます。格納プロセスは以下の通りです: 1. 3を格納:calcHash1(3) = 4で4番目に格納 2. 18を格納:calcHash1(18) = 4で衝突→calcHash2(18) = 2で2番目に格納 3. 11を格納:calcHash1(11) = 2で衝突→calcHash2(11) = 5で5番目に格納 結果として、hashArrayは[-1, 18, -1, 3, 11]となります。この問題は、ハッシュテーブルにおける衝突解決の仕組みと、複数のハッシュ関数を使用する手法の理解を問うています。
ハッシュテーブルの問題を解く際は、以下のステップで考えましょう: 1. まず配列の初期状態を確認(この場合は全て-1) 2. 各値に対して: - 第1ハッシュ関数で位置を計算 - その位置が埋まっている場合は第2ハッシュ関数を使用 3. 値を1つずつ追跡して最終状態を導出 また、mod演算の結果に1を加えることで、配列の添字が1から始まることに注意してください。実務でも使用される重要なデータ構造なので、基本的な仕組みをしっかり理解しておきましょう。