雜湊查詢(重點講解查詢失敗的ASL)
阿新 • • 發佈:2020-10-23
本文以例題形式講解雜湊查詢中,散列表的構建,以及查詢成功的ASL和失敗的ASL。重點講解求解失敗的ASL的過程,巨詳細
【2010年全國試題41(10分)】將關鍵字序列(7、8、30、11、18、9、14)雜湊儲存到散列表中。散列表的儲存空間是一個下標從0開始的一維陣列,雜湊函式為: H(key) = (keyx3) MOD 7,處理衝突採用線性探測再雜湊法,要求裝填(載)因子為0.7。
(1) 請畫出所構造的散列表。
(2) 分別計算等概率情況下查詢成功和查詢不成功的平均查詢長度。
key | 7 | 8 | 30 | 11 | 18 | 9 | 14 |
---|---|---|---|---|---|---|---|
H(key) | 0 | 3 | 6 | 5 | 5 | 6 | 0 |
實際雜湊位置 | 0 | 3 | 6 | 5 | 7 | 8 | 1 |
查詢成功需要探測次數 | 1 | 1 | 1 | 1 | 3 | 3 | 2 |
(1)裝填因子, 所以 n = 10
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
7 | 14 | 8 | 11 | 30 | 18 | 9 |
(2)根據表1-1中 查詢查詢成功需要探測次數,
接下來重點講解查詢失敗的ASL
求解查詢失敗的ASL需要計算出每個雜湊位置(即每個模對應的值)查詢失敗所需要的的次數,本題雜湊函式模的是7,所以只需要計算模為0,1,2,3,4,5,6的關鍵字查詢失敗所需要的次數。查詢到空說明查詢失敗,查詢示意圖如下
- 查詢模為0的關鍵字,失敗時比較的次數為3
- 查詢模為1的關鍵字,失敗時比較次數為2
- 查詢模為2的關鍵字,失敗時比較次數為1
- 查詢模為3的關鍵字,失敗時比較次數為2
- 查詢模為4的關鍵字,失敗時比較次數為1
- 查詢模為5的關鍵字,失敗時比較次數為5
- 查詢模為6的關鍵字,失敗時比較次數為4
將上述過程整理成表格如下
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
---|---|---|---|---|---|---|---|---|---|---|
7 | 17 | 8 | 11 | 30 | 18 | 9 | ||||
各個模查詢失敗需要比較的次數 | 3 | 2 | 1 | 2 | 1 | 5 |
查詢失敗的平均比較次數為: