原文链接:https://blog.csdn.net/weixin_38169413/article/details/81612307
成功平均查找长度(ASLs) 的计算过程:
若一次就能查到,记1;
通过i次查到,记i;
如:ASLs=(1+7+1+1+2+1+4+2+4)/9=23/9≈2.56
不成功平均查找长度 (ASLu)
不在散列表中的关键词的平均查找次数(不成功)
将不在散列表中的关键词分若干类;
如:根据H(key)值分类(不懂)
ASLu=(3+2+1+2+1+1+1+9+8+7+6)/11=41/11≈3.73
Hash表查找代码:
//search the key
Status searchHash(HashTable H,int key,int *addr)
{
*addr = Hash(key);
while(H.elem[*addr] != key)
{
*addr = (*addr+1) % m;
if(H.elem[*addr] == NULLKEY || *addr == Hash(key))
//return the origin
return UNSUCCESS;
}
return SUCCESS;
}
其中if(H.elem[*addr] == NULLKEY || *addr == Hash(key))
查找不成功的条件是:
1)索引下的哈希表键为空:H.elem[*addr] == NULLKEY
2)搜索一边后索引又回到了初始位置:*addr == Hash(key)