* * * * * * * * * * * * * * * * * * * * * * * 检索 */85 算法分析 设散列表的装填因子为 ? = n / (s*m),其中 n 是表中已有的表项个数,s 是每个桶中最多可容纳表项个数,m 是表中的桶数。 可用 ? 表明散列表的装满程度。? 越大,表中表项数越多,表装得越满,发生冲突可能性越大。 通过对线性探查法的分析可知,为搜索一个关键码所需进行的探查次数的期望值 P 大约是 (2-?)/(2-2?)。虽然平均探查次数较小,但在最坏情况下的探查次数会相当大。 检索 */85 (2) 二次探查法 (quadratic probing) 为改善“堆积”问题,减少为完成搜索所需的平均探查次数,可使用二次探查法。 通过某一个散列函数对表项的关键码 x 进行计算,得到桶号,它是一个非负整数。 H0 = hash(x) 二次探查法在表中寻找“下一个”空桶的公式为: Hi = (H0 + i 2 ) % m, Hi = (H0 - i 2 ) % m, i = 1, 2, …, (m-1)/2 式中的 m 是表的大小,它应是一个值为 4k+3 的质数,其中 k 是一个整数。这样的质数如 3, 7, 11, 19, 23, 31, 43, 59, 127, 251, 50
原创力文档

文档评论(0)