设散列表的长度为8散列函数Hk=k mod 7初始记录关键字序列为25318271368要求分别计算出用线性探测法和链地址法作为解决冲突方法的平均查找长度。
首先,根据散列函数 H(k) = k mod 7,计算每个关键字的散列地址:
H(25) = 25 mod 7 = 4 H(31) = 31 mod 7 = 3 H(8) = 8 mod 7 = 1 H(27) = 27 mod 7 = 6 H(13) = 13 mod 7 = 6 H(68) = 68 mod 7 = 5
接下来,我们分别使用线性探测法和链地址法来处理冲突。
- 线性探测法: 在线性探测法中,当发生冲突时,我们将继续探测下一个位置,直到找到一个空槽或者查找完整个散列表。
将关键字依次放入散列表中: 位置4:25 位置3:31 位置1:8 位置6:27 位置6已被占用,继续探测下一个位置。 位置0:13 位置5:68
最终散列表为: 位置0:13 位置1:8 位置2:空 位置3:31 位置4:25 位置5:68 位置6:27 位置7:空
计算平均查找长度: (1+2+3+4+5+6+7) / 7 = 4
- 链地址法: 在链地址法中,我们将每个冲突的关键字放入一个链表中。
建立链表并将关键字插入: 位置4:25 位置3:31 位置1:8 位置6:27 位置6已被占用,将27插入到27的链表中。 位置0:13 位置5:68
最终散列表为: 位置0:13 -> NULL 位置1:8 -> NULL 位置2:NULL 位置3:31 -> NULL 位置4:25 -> NULL 位置5:68 -> NULL 位置6:27 -> NULL 位置7:NULL
计算平均查找长度: (1+2+1+1+1+1+1) / 7 = 1
因此,使用线性探测法的平均查找长度为4,使用链地址法的平均查找长度为1
原文地址: https://www.cveoy.top/t/topic/hRZl 著作权归作者所有。请勿转载和采集!