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 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!
相似類型題目
有一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 之探測順序,那些是正確的?
有一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 個位置何者是正確的?
利用雜湊法(Hashing)將下列六個數字:22、29、40、45、54、59 依序放入0~5 共六個位置,雜湊函數(Hashing Function)為X mod 6,碰撞以循序偵測(Linear Probing),則0、1、2、3、4、5 六個位置的內容依序為何?
一雜湊函數(Hashing Function)為H(X)=X mod 11,則H(35)與下列那一項會碰撞(Collision)?
依序將12, 33, 19, 27 存入7 個bucket(單一slot,位址為0 至6),若以重雜湊(Rehashing)來處理溢位情形,雜湊函數如下:第一個雜湊函數 f1 (key) = key mod 7, 第二個雜湊函數 f2 (key) = (f1 (key)*key) mod 7 ,第三個雜湊函數 f3 (key) = (f2 (key)*key) mod 7 ,則下列敘述那些是正確?