2. 假設我們使用雜湊(hashing)法來建立整數關鍵詞(integer key)的雜湊表(hash table),雜湊 表的大小為 7,包含第一個位置到第七個位置。雜湊函數(hash function)為 h(x)=(x%7)+1, 其中 x 為整數關鍵詞,%為 modulo operator,h(x)為 x 存在雜湊表裡的位置。解決碰撞 (collision)的方法為線性開放尋址(linear open addressing)法。我們依序輸入 12, 26, 1, 68 後,請問 26 存在雜湊表裡的第幾個位置?
詳解 (共 6 筆)
詳解
1. 12%7=5,5+1=6 ((12放位置6
2. 26%7=5,5+1=6 ((碰撞,故將26往後放位置7
3. 1%7=1,1+1=2 ((1放位置2
4. 68%7=5,5+1=6 ((碰撞並往後,又碰撞但位置為1~7,故循環將68放位置1
詳解
12%7+1 = 5+1 =6
26%7+1= 5+1 =6 ,但因為碰撞 6+1=7
詳解
(12%7)+1 = 6
(26%7)+1 = 6(碰撞+線性) = 6+1 = 7
(1%7)+1 = 2
(68%7)+1=6 (碰撞+線性) =6+1+1=1
詳解
第7個位置
詳解
7
詳解
1 2 3 4 5 6 7
(12%7)+1=6
(26%7)+1=6(衝突)
6+1=7(線性搜尋