平均查找长度

ASL(Average Search Length),即平均查找长度,在查找运算中,由于所费时间在关键字的比较上,所以把平均需要和待查找值比较的关键字次数称为平均查找长度。

它的定义是这样的:在这里插入图片描述

其中n为查找表中元素个数,Pi为查找第i个元素的概率,通常假设每个元素查找概率相同,Pi=1/n,Ci是找到第i个元素的比较次数。

顺序查找平均查找长度的计算

在顺序查找(Sequence Search)表中,查找方式为从头扫到尾,找到待查找元素即查找成功,若到尾部没有找到,说明查找失败。

所以说,Ci(第i个元素的比较次数)在于这个元素在查找表中的位置,如第0号元素就需要比较一次,第一号元素比较2次…第n号元素要比较n+1次。所以Ci=i;所以

查找成功 的平均查找长度:

在这里插入图片描述

查找失败 的平均查找长度:
在这里插入图片描述

折半查找平均查找长度的计算

折半查找(Binary Search),首先待查找表是有序表,这是折半查找的要求。在折半查找中,用二叉树描述查找过程,查找区间中间位置作为根,左子表为左子树,右子表为右子树,因为这颗树也被成为判定树(decision tree)或比较树(Comparison tree)。

查找方式为(找k):先与树根结点进行比较,若k小于根,则转向左子树继续比较,若k大于根,则转向右子树,递归进行上述过程,直到查找成功或查找失败。

在n个元素的折半查找判定树中,由于关键字序列是用树构建的,所以查找路径实际为树中从根节点到被查结点的一条路径,因为比较次数刚好为该元素在树中的层数。所以:

查找成功 的平均查找长度:
在这里插入图片描述
其中,Pi为查找k的概率,level(Ki)为k对应内部结点的层次。而在这样的判定树中,会有n+!种查找失败的情况,因为将判定树构建为完全二叉树,又有n+1个外部结点(用Ei(0<=i<=n)表示)

查找失败 的平均查找长度:

在这里插入图片描述

qi表示查找属于Ei中关键字的概率,level(Ui)表示Ei对应外部结点的层次。

在一颗有n个结点判定树中,

在这里插入图片描述


例子:计算二叉查找树的平均查找长度

例:给11个数据元素有序表(2,3,10,15,20,25,28,29,30,35,40)采用折半查找。则ASL成功和不成功分别是多少?

先画出判定树,
在这里插入图片描述

查找成功 的平均查找长度:
在这里插入图片描述

查找失败 的平均查找长度:
在这里插入图片描述

参考:https://www.cnblogs.com/ygsworld/p/10238729.html

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐