常见的平均查找长度总结

// 部分图片源自网络视频教程
查找长度(平均查找长度)和时间复杂度表示的是一个意思,相同的查找长度和时间复杂度处于一个量级。

而所谓的查找长度就是在查找运算中需要对比关键字的次数。

1. 平均查找长度(ASL)

在这里插入图片描述

  1. pi 是查找到某个元素的概率(probability)
  2. ci 是查找到这个元素时已经比较的次数,如,查找在 10 个数中查找第 5 个数,其比较的次数是多少(包括和第 5 个数比较的次数)

2. 顺序查找的 ASL

常见的平均查找长度总结_第1张图片

2. 折半查找 ASL

折半查找的 ASL 利用二叉判定树计算
常见的平均查找长度总结_第2张图片
NOTE:
每个结点的比较次数之和,即该结点所在的层次数
空指针处比较次数之和,就是该空指针的双亲结点所在的层次

3. 散列表中地址链接法的 ASL

ASL_成功 = 每个元素被访问(查找)的次数
ASL_失败 = 每个地址被访问(查找)的次数
常见的平均查找长度总结_第3张图片
常见的平均查找长度总结_第4张图片

4. 二叉排序树的 ASL

查找成功的情况
常见的平均查找长度总结_第5张图片
ASL = (层数*该层的结点个数)*每个结点被查找的概率

比如左图,第一层有一个,就是 11,第二层有两个结点就是 22,第三层有四个结点就是 3*4,以此类推。

因为计算的是 ASL,所以我们是假设每一个结点被查找的情况,通常每个结点被找到的概率都是相等的,即若有 n 个结点,那么每个结点被找到的概率就是 1/n。所以上图左图是乘以的 1/8 ,因为有 8 个结点。

最坏的情况,可以看到这是一棵二叉树,查找成功的最坏情况就是被查找的数据在最底层,也就是最坏情况就是查询一个树的高度。

查找失败的情况
常见的平均查找长度总结_第6张图片
查找失败的情况,就是查询到紫色框框(紫色框框就是 NULL)都发现没有找到要比对的数字,那么此时查找失败,其计算方式同成功时一样,只是我们只用计算失败的那些紫色的框框。

你可能感兴趣的:(数据结构和算法,数据结构,ASL)