散列查找性能分析
#如何计算散列表的ASL
以线性探测为例
分子每项都是插入元素时的冲突次数+1,也是插入元素计算地址的次数,简单易懂
分母是注意是要以散列函数的取值范围为准,而非散列表的长度,毕竟查找时没有一个关键字的初始位置会超过13(以本题为例)
查找失败的可能性也就有13种,然后依此取查找失败的次数相加/13即可
当删除一个元素时见解决冲突,逻辑删除会导致即使删除后查找时依旧要按原来逻辑查找,而不是视作删除元素的位置为空后再进行查找,如删除20,其余元素均要求按原来的查找次数作为其分子的项,然后运算。
#影响散列表查找性能的因素
#装填因子
a=(表中记录数n)/(散列表长度m),反映散列表“满"的程度
所以装填因子越大,越容易发生冲突,导致插入和查找操作效率低,ASL增大
#聚集(堆积)现象
解释:处理冲突的过程中,几个初始散列地址不同的元素争夺同一个后继散列地址的现象
线性探测法很易于爆发这种现象
解决方法:使用其他解决冲突中开放定址的其他方法