有关键字序列{32,53,78,12,25,62,43},哈希函数H(K)=K+mod+7,用线性探测再散列方法处理冲突,要求构造一个装填因子为0.7的哈希表,并计算查找成功时的平均查找长度。
时间: 2024-06-13 11:08:31 浏览: 208
根据题意,关键字序列为{32,53,78,12,25,62,43},哈希函数为H(K)=K+mod+7,使用线性探测再散列法处理冲突,要求构造一个装填因子为0.7的哈希表,并计算查找成功时的平均查找长度。
首先,计算哈希表的大小,由于装填因子为0.7,因此哈希表的大小为10。
其次,根据哈希函数,计算每个关键字的哈希地址:
- H(32) = 32 + 7 % 10 = 9
- H(53) = 53 + 7 % 10 = 0
- H(78) = 78 + 7 % 10 = 5
- H(12) = 12 + 7 % 10 = 9(冲突)
- H(25) = 25 + 7 % 10 = 2
- H(62) = 62 + 7 % 10 = 9(冲突)
- H(43) = 43 + 7 % 10 = 0(冲突)
由于发生了冲突,需要使用线性探测再散列法解决。具体方法是,从发生冲突的位置开始,依次向后查找空闲位置,直到找到一个空闲位置或者查找到整个哈希表。如果查找到整个哈希表,就从头开始查找,直到找到一个空闲位置。
- H(12) = 9,发生冲突,从9开始向后查找,直到找到空闲位置3
- H(62) = 9,发生冲突,从9开始向后查找,直到找到空闲位置4
- H(43) = 0,发生冲突,从0开始向后查找,直到找到空闲位置1
因此,哈希表为:[53, 43, 78, 12, 25, 62, 32, None, None, None]
计算查找成功时的平均查找长度,需要先计算查找成功的概率。由于哈希函数是随机的,因此每个关键字的哈希地址是等概率的,查找成功的概率也是相等的。因此,查找成功的概率为1/7。
平均查找长度=查找成功的概率*成功查找所需的比较次数=1/7*1=1/7
阅读全文
相关推荐


















