双散列

来自testwiki
imported>魔琴2021年1月15日 (五) 16:29的版本 (加入{{Cleanup rewrite}}、{{Cleanup-jargon}}、{{Notability Unreferenced}}和{{Unreferenced}}标记)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转到导航 跳转到搜索

Template:Multiple issues 雙雜湊(Double hashing),是透過兩個雜湊函式來查詢位置。

hi(k)=(hash1(k)+i*hash2(k))

例子:

假設hash1=kmod10hash2=7(kmod7)

散列地址 空表 插入89 插入18 插入49 插入58 插入69
0 69
1
2
3 58 58
4
5
6 49 49 49
7
8 18 18 18 18
9 89 89 89 89 89

h0(89)=9沒有與第9格衝突,所以被安置到第9格


h0(18)=8沒有與第8格衝突,所以被安置到第8格


h0(49)=9與第9格衝突,所以需要h1

h1(49)=(9+(749mod7))mod10=6沒有與第6格衝突,所以被安置到第6格


h0(58)=8與第8格衝突,所以需要h1

h1(58)=(8+(758mod7))mod10=3沒有與第3格衝突,所以被安置到第3格


h0(69)=9與第9格衝突,所以需要h1

h1(69)=(9+(769mod7))mod10=0沒有與第0格衝突,所以被安置到第0格