LONGEPASS
Q249.

有一Hash Table 其 Hash 函數定義為 h1 (key)=key%11,其中%表示兩數相除後之餘數,當發生碰撞(Collision)時採Double Hashing 方式處理,其函數定義h(key, j)= (h1 (key) + j*h2(key) ) % 11, 其中j=0, 1, 2,…, 11; h2 (key)=1+(key%10) 。欲將26 放入Hash Table,在Hash Table 之探測順序,那些是正確的?

電腦軟體設計共同科目 · 乙級 · Q249

難易度分析

4 / 5

本題屬於計算型問題,要求考生精確執行 Double Hashing 的運算邏輯。由於需要依序推導多個探測位置且為多選題,必須完整排除所有錯誤選項,對計算精準度與對雜湊處理機制的理解要求較高。

正確答案 (複選):③, ④

  • ③ 前8 個探測順序包括 7:索引值 7 出現在第 3 次探測(j=2)。計算為 (4 + 2×7) % 11 = 18 % 11 = 7,符合 Double Hashing 的探測邏輯。
  • ④ 前8 個探測順序包括 9:索引值 9 出現在第 8 次探測(j=7)。計算為 (4 + 7×7) % 11 = 53 % 11 = 9,屬於前 8 個探測位置之一。

錯誤選項解析

  • ① 前8 個探測順序包括 1:索引值 1 並不在前 8 次探測序列中。實際探測順序為 4, 0, 7, 3, 10, 6, 2, 9,故不包含 1。
  • ② 前8個探測順序包括 5:索引值 5 並不在前 8 次探測序列中。由於 h2(26)=7 與表格大小 11 互質,探測會遍歷所有位置,但前 8 次不包含 5。
Learning Tip

"Double Hashing 的核心在於第二雜湊函數 h2(key) 必須與表格大小 互質,才能確保探測序列遍歷所有槽位。本題 h1(26)=4、h2(26)=7,探測步長為 7,依序產生 4, 0, 7, 3, 10, 6, 2, 9。常考陷阱在於混淆 j 的起始值(從 0 開始) 與誤算餘數,務必逐步驗證每個 j 對應的索引位置。"

學員答題分佈

①前8 個探測順序包括 10%
②前8個探測順序包括 50%
③前8 個探測順序包括 70%
④前8 個探測順序包括 90%

此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!

相似類型題目