数据结构中,查找不成功的平均查找长度怎么求?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构中,查找不成功的平均查找长度怎么求?相关的知识,希望对你有一定的参考价值。

查找不成功的ASL的大概意思就是从散列表的第一个位置开始依次向后比较,遇到空的位置或者直到表尾都没有与之相匹配的就算查找失败,然后从第二个位置再进行以上操作,以此类推,一直到第n个位置(表的最后一个位置)。这时候,从表头到表尾的每一个位置都会有一个比较失败的次数,将他们依次相加后除以表长,得到的就是查找失败的平均查找长度(ASL)
与查找成功相比,查找失败在计算ASL时,是将散列表中的所有位置都计算在内,遇到空位置时比较次数就为1;而查找成功时的ASL只考虑所给元素的位置,不考虑空位置。
参考技术A 简单来说就是对于每一个可能的KEY,从开始查找到确定其不在表中所需的查找次数相加,再除以其出现的概率本回答被提问者采纳 参考技术B 是对于每一个可能的KEY,从开始查找到确定其不在表中所需的查找次数相加,再乘以其出现的概率

顺序查找

顺序查找适合于存储结构为顺序存储或链接存储的线性表;顺序查找也称为线形查找,属于无序查找算法。
从数据结构线形表的一端开始,顺序扫描,依次将扫描到的结点关键字与给定值k相比较,若相等则表示查找成功;
若扫描结束仍没有找到关键字等于k的结点,表示查找失败。
查找成功时的平均查找长度为:(假设每个数据元素的概率相等) ASL = 1/n(1+2+3+…+n) = (n+1)/2 ;
当查找不成功时,需要n+1次比较,时间复杂度为O(n);所以,顺序查找的时间复杂度为O(n)
 
//顺序查找
int SequenceSearch(int a[], int value, int n)
{
    int i;
    for(i=0; i<n; i++)
        if(a[i]==value)
            return i;
    return -1;
}

 

以上是关于数据结构中,查找不成功的平均查找长度怎么求?的主要内容,如果未能解决你的问题,请参考以下文章

二叉排序树平均查找长度

数据结构 平均查找长度

散列表的平均查找长度怎么计算?

二叉搜索树的平均查找长度及时间复杂度

数据结构第九十章期末复习

散列表链地址法查找成功的平均查找长度怎么计算