LONGEPASS
Q105.

有一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 之探測順序,前5 個位置何者是正確的?

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

難易度分析

4 / 5

本題要求對雜湊表的衝突處理機制進行具體數值計算,涉及多個函數的疊代運算與模運算。由於必須精確計算連續五個探測位置,且選項中包含部分正確的數值序列,增加了判別難度。

正確答案:②4, 0, 7, 3, 10

② 4, 0, 7, 3, 10:正確計算:h1(26) = 26 % 11 = 4;h2(26) = 1 + (26 % 10) = 7。依 h(key, j) = (4 + j × 7) % 11,j=0 得 4,j=1 得 (4+7)%11=0,j=2 得 (4+14)%11=7,j=3 得 (4+21)%11=3,j=4 得 (4+28)%11=10,故探測順序為 4, 0, 7, 3, 10。

錯誤選項解析

  • ① 7, 0, 4, 8, 1:此探測順序起始於位置 7,但根據 h1(26) = 26 % 11 = 4,初始位置應為 4 而非 7,故計算過程有誤。
  • ③ 4, 7, 1 0, 2, 5:此選項第二個探測位置為 7,但正確應為 (4+7)%11=0,且後續數值亦不符合 Double Hashing 公式計算結果。
  • ④ 4, 0, 7, 3, 6:此選項前三個位置 4, 0, 7 正確,但 j=3 時應為 (4+21)%11=3,j=4 時應為 (4+28)%11=10,而非 6,最後一個數值計算錯誤。
Learning Tip

"Double Hashing 的核心在於使用第二個雜湊函數 h2(key) 作為探測步長,可避免 Primary Clustering 問題。常考陷阱在於 h2(key) 的計算 與 模運算的正確應用,需特別注意 j 從 0 開始遞增,且每次都要對 Table Size 取餘數。"

學員答題分佈

①7, 0, 4, 8, 10%
②4, 0, 7, 3, 100%
③4, 7, 1 0, 2, 50%
④4, 0, 7, 3, 60%

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

相似類型題目