假设哈希表长度为n,哈希函数为Hash(key)=key%n, key为关键码。
当Hash(key)相等时,则使用Hash(key) = (Hash(key) + d) % n,d为:1^2、-(1 ^2)、2 ^2、-(2 ^2)、3 ^2、-(3 ^2)…
例子:
设哈希表长为11,哈希函数为Hash (key)=key%11。存在关键码{43,7,29,22,16,92,44,8,19},采用二次探测法处理冲突,建立hash表。
由于哈希表长为11,则序号为0~10.
Hash(43)=43%11=10, 43地址为10
Hash(7)=7%11=7, 7地址为7
Hash(29)=29%11=8,29地址为8
Hash(22)=22%11=0,22地址为0
Hash(16)=16%11=5,16地址为5
Hash(92)=92%11=4,92地址为4
Hash(44)=44%11=0,由于地址0已存在22,所以Hash(44)=(0+1 ^2)%11=1,44地址为1
Hash(8)=8%11=8,由于地址8已存在29,所以Hash(8)=(8+1 ^2)%11=9,8地址为9
Hash(19)=19%11=8,由于地址8已存在29,所以Hash(19)=(8+1 ^2)%11=9,由于地址9已存在8,所以Hash(19)=(8-1 ^2)%11=7,由于地址7已存在7,所以Hash(19)=(8+2 ^2)%11=1,由于地址1已存在44,所以Hash(19)=(8-2 ^2)%11=4,由于地址4存在92,所以Hash(19)=(8+3 ^2)%11=6,19地址为6
转载:https://blog.csdn.net/huanxianxianshi/article/details/100829741