22 某雜湊表(hash table)有 13 個空格,編號為 0 到 12。假設雜湊函數(hash function)為 h(k) = k mod 13,
且此雜湊表使用平方探測法(quadratic probing,公式為 h(k,i) = (h(k) + i2
) mod 13)處理碰撞(collision)。
依此方法,若將 28、30、41、23、47、54、17 等 7 個數字依序存入後,則此時編號 5 的空格所存之
數字為何?
(A)17
(B)30
(C)54
(D)沒有數字
統計: A(206), B(56), C(100), D(71), E(0) #1428014
詳解 (共 7 筆)
0 1 2 3 4 5 6 7 8 9 10 11 12
28 mod 13 = 2
0 1 2 3 4 5 6 7 8 9 10 11 12
28
30 mod 13 = 4
0 1 2 3 4 5 6 7 8 9 10 11 12
28 30
41 mod 13 = 2(碰撞)
2+12=3
0 1 2 3 4 5 6 7 8 9 10 11 12
28 41 30
23 mod 13 = 10
0 1 2 3 4 5 6 7 8 9 10 11 12
28 41 30 23
47 mod 13 = 8
0 1 2 3 4 5 6 7 8 9 10 11 12
28 41 30 47 23
54 mod 13 = 2(碰撞)
2+12=3(碰撞)
2+22=6
0 1 2 3 4 5 6 7 8 9 10 11 12
28 41 30 54 47 23
17 mod 13 = 4(碰撞)
4+12=5
0 1 2 3 4 5 6 7 8 9 10 11 12
28 41 30 17 54 47 23
以下是我的解題方式,雖然不影響答案,但有些地方跟最佳解不太一樣
若依題目來說
沒碰撞的情況:h(k) = k mod 13
有碰撞的情況:h(k,i) = (h(k) +i2 ) mod 13)
依序輸入28、30、41、23、47、54、17
28 mod 13 = 2
30 mod 13 = 4
41 mod 13 = 2....(碰撞),故41+12=42,42 mod 13 = 3
23 mod 13 = 10
47 mod 13 = 8
54 mod 13 = 2...(碰撞),故54+12=55,55 mod 13 = 3...(碰撞),故54+22=58,58 mod 13 = 6
17 mod 13 = 4...(碰撞),故17+12=18,18 mod 13 = 5
放的位置應該如下:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 28 | 41 | 30 | 17 | 54 | 47 | 23 |