最近复习时关于计算哈希表平均查找长度计算有感:
采用 线性探测再散列法,二次探测法 处理冲突构建的哈希表中,查找失败时的平均查找长度如何计算?
例:已知一组关键字(19,14,23,1,68,20,84,27,55,11,10,79)
哈希函数为: H(key)=key MOD 13,哈希表长为m=15,设每个记录的查找概率相等,查找失败时的平均查找长度各是多少?
1.线性探测构建的哈希表:
成功ASL的计算不做讨论,失败时候的ASL计算过程如下:
1.有多少种情况? 因为哈希函数为 key MOD 13 所以总的情况是 0至12 因为对13取余的结果只能是这是十三种情况
这里的情况指的是我们查找任意一个数字对13取余 数字落点 的情况有多少种
2.冲突次数是多少?从下标为1开始也就是14开始一直比较到下表为13为止 查找结束-记为一次查找失败共比较了13次,同理可推下标为2,3,4..
不要忘记了 下标为0 的位置 只需要比较一次 即为查找失败
3.计算公式
ASL(UNSUCC)=总比较次数/总情况数=1+13+12+...+2/13 别忘记了1
2.二次探测构建的哈希表:
1.总情况数:同样的对13取余也只有13种
2.冲突次数:同上述描述-但二次探测的下一次比较元素下标的与线性探测不同需要注意
因为 di=1^2,-1^2,2^2,-2^2,3^2,-3^2.. ^2为平方
需要注意什么时候我们算查找结束呢 一般是比较到了空位置的时候