双散列

来自testwiki
跳转到导航 跳转到搜索

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格