算法导论第11章11.4-1线性探测

来源:互联网 发布:数据恢复工具破解版 编辑:程序博客网 时间:2024/06/04 18:49

利用线性探测法构造哈希表

已知一组关键字为(10,22,31,4,15,28,17,88,59),用开放寻址法插入到一个长度为m=11的散列表中,辅助散列函数为h'(k)=k % m,用线性探查法解决冲突构造这组关键字的散列表。
  解答:为了减少冲突,通常令装填因子α<l(α=(关键字个数n)/(散列表大小m))。这里关键字个数n=9,m=11,此时α≈0.81,散列表为T[0..10],散列函数为:h(key)=key%11。
     由除余法的散列函数计算出的上述关键字序列的散列地址为(10,0,9,4,4,6,6,0,4)。
     前4个关键字插入时,其相应的地址均为开放地址,故将它们直接插入T[10],T[0),T[9]和T[4]中。
     当插入第5个关键字15时,其散列地址4(即h(15)=15%11=4)已被关键字4(15和4互为同义词)占用。故探查h=(4+1)%11=5,此地址开放,所以将15放入T[5]中。

当插入第6个关键字28时,其相应的地址为开放地址,故将它们直接插入T[6]中。
     当插入第7个关键字17时,其散列地址6已被非同义词28先占用,故探查h=(6+1)%11=7,将其插入到T[7]中。
     当插入第8个关键字88时,散列地址0已被同义词22占用,故探查h=(0+1)%11=1,此地址开放,所以将88放入T[1]中。
     类似地,第9个关键字59时,散列地址4已被同义词4占用,故探查h=(4+1)%11=5,此地址已被第5个关键字15占用故探查h=(4+2)%11=6,此地址已被第6个关键字28占用,继续探查h=(4+3)%11=7,此地址已被第7个关键字17占用,再探查h=(4+4)%11=8,此地址开放,所以将59放入T[8]中。


0 0
原创粉丝点击