查找有以下查找方式:

  • 顺序表查找
  • 二分查找
  • 索引表查找
  • 二叉排序树查找
  • 哈希表查找

接下来整理一下上面每个方式的平均查找长度


顺序表查找ASL

如果每个关键字查找概率相同,则ASL = (n+1)/2
一般都是概率相同。


二分查找ASL

举例说明:

这是一个有序序列(下标和关键字相同):
0   1   2   3   4  初始化:low = 0, high = 4第一次:mid = (0+4)/2 = 2 , 则2为第一次找到的关键字。所以n2 = 1第二次:如果mid小了,则low = 3, mid = (3+4)/2=3;则3为第二次找到的关键字如果mid大了,则high = 1, mid = (0+1)/2=0;则0为第二次找到的关键字所以n0 = n3 = 2第三次:过程不在赘述n1 = n4 = 3所以ASL = (n0+n1+n2+n3+n4)/5 = 11/5

索引表ASL

假设序列分成了n块,每块k个元素,那么ASL = LB + LA
那么ASL = (1+n)/2 + (1+k)/2


二叉排序树

根据给定的序列建立好二叉排序树。
比如序列 20, 12, 42, 31, 18, 14, 28
二叉排序树如下:

              2012          4218      3114      28

假设有n个结点,则ASL =

这里的hi是每个结点的深度,比如20的深度为1, 12的深度为2等,所以上面例子的ASL = (1+2+2+3+3+4+4)/7 = 19/7。


哈希表ASL

1.线性探测法

假设第i个关键字的探测次数为Pi

ASL =

举例:
已知待散列的线性表为(36, 15, 40, 63, 22),散列用的一维地址空间为[0..6],假定选用的散列函数为H(k) = K mod 7,采用线性探测解决冲突
36 mod 7 = 1
15 mod 7 = 1
40 mod 7 = 5
63 mod 7 = 0
22 mod 7 = 1

所以36的探测次数为0,15的探测次数为1,40的探测次数为0,63的探测次数为0,22的探测次数为2
则ASL = ((0+1) + (1+1) + (0+1) + (0+1) + (2+1)) / 5 = 1.6

2.链地址法
还是上面的例子线性表为(36, 15, 40, 63, 22),链地址给[0..6]

0 -> 63
1 -> 36 -> 15 -> 22
2 -> NULL
3 -> NULL
4 -> NULL
5 -> 40
6 -> NULL
第一列有3个关键字63,36,40; 第二列有1个关键字15; 第三列有1个关键字22

∴ ASL = (1 * 3 + 2 + 3) / 5 = 1.6

查找——平均查找长度相关推荐

  1. 【算法分析与设计】二分查找平均查找长度的求解

    问题描述 对于长度为 9 9 9 的顺序存储的有序表 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 {1, 2, 3, 4, 5, 6, 7, 8, 9}

  2. 数据结构:二叉查找树 BST 平均查找长度 ASL 的计算

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

  3. 计算二叉排序树的平均查找长度

    查找成功的情况下: 第一层结点:一个 查找了一次 第二层结点:二个 每个查找两次 第三层结点:四个 每个查找三次 第四层结点:二个 每个查找四次 所以查找成功情况下的平均查找长度是: 查找失败的情况下 ...

  4. 哈希表等概率情况下查找成功和查找不成功的平均查找长度的计算

    最近复习了下数据结构中的哈希表,发现在计算等概率情况下查找不成功的平均查找长度时比较迷茫,不知道到底是怎么计算出来的.现在通过查阅资料终于知道如何计算了,所以记录下来以供以后查阅. 下面看下2010年 ...

  5. 折半查找判定树及平均查找长度

    折半查找判定树及平均查找长度 从折半查找的过程看,以有序表的中间记录作为比较对象,并以中间记录将表分割为两个子表,对子表继续上述操作.所以,对表中每个记录的查找过程,可用二叉树来描述,二叉树中的每个结 ...

  6. (王道408考研数据结构)第七章查找-第一节:查找的基本概念、平均查找长度

    文章目录 一:查找的基本概念 (1)查找表和关键字 (2)查找的概念 二:静态查找表和动态查找表 三:查找算法评价指标--平均查找长度 一:查找的基本概念 (1)查找表和关键字 查找表(Search ...

  7. 二分查找的平均查找长度详解【转】

    来源:http://blog.csdn.net/turne/article/details/50488378 看数据结构书的时候碰上的内容,我自己将它化成关于级数的题,然后自己算的过程,基本就是等比级 ...

  8. 二叉排序树查找不成功的平均查找长度

    在看二叉排序树查找分析时,对"二叉排序树查找不成功的平均查找长度"不是很理解,上网查了一下,稍微小结一下: 假如一棵二叉排序树如下: 那么查找不成功的平均查找长度是:(2*2+3* ...

  9. 二分查找的平均查找长度_二分查找(折半查找)代码实现

    整理不易,手有余香请点赞! 折半查找,也称二分查找,在某些情况下相比于顺序查找,使用折半查找算法的效率更高.但是该算法的使用的前提是静态查找表中的数据必须是有序的. 在折半查找之前对查找表按照所查的关 ...

最新文章

  1. 转-D3D中的四元数
  2. 在SQL Server中创建用户角色及授权
  3. linux mysql安装失败 lib冲突问题_Linux 安装 Mysql 冲突 问题
  4. boost::hana::is_empty用法的测试程序
  5. 【转载】oracle闪回技术详解之闪回drop(神奇的flashback)
  6. ORA-01940 无法删除当前已连接的用户之解决方案
  7. 大改革,GNOME 3.x将直接跳到GNOME 40
  8. c语言根据图片轮廓图,c语言通过opencv实现轮廓处理与切割
  9. 大数据处理工具Kafka、Zk、Spark
  10. 计算机弹琴游戏,电脑键盘钢琴软件(弹钢琴小游戏)
  11. 华为radius服务器配置
  12. SAP FI 系列 (022) - 货币和汇率的配置
  13. 学c语言vs2010安装教程 pdf,Microsoft Visual Studio 的C++ 2010入门教程.pdf
  14. 21年最新-李沐-动手学深度学习第二版
  15. Ubuntu 16.04 查看软件包的命令技巧
  16. 微端游戏启动器launcher的制作(序篇)
  17. 如何关闭华为手机连接电脑自动弹出cd驱动器和类似文件管理文件夹
  18. 关于一张出库单开具了多张发票的错误处理
  19. Pytorch:定义的网络结构层能否重复使用
  20. 博士申请 | 香港中文大学(深圳)濮实老师招收分布式优化与机器学习全奖博士生...

热门文章

  1. 六、科大软件工程(孟宁)(6:子系统的可重用设计和代码背后的思想)
  2. Unity编辑器拓展(Gizmos)
  3. 2022压轴神作《爱死机3》,助推国漫「第二次崛起」​?
  4. 男士如何提高个人形象
  5. 猫咪藏在哪个房间python_猫咪在家总是藏起来,这是怎么回事?
  6. 计算机组装虚拟仿真,虚拟仿真技术在中职计算机组装与维护课程中的应用探讨...
  7. 十二届全国计算机学奥赛答案,十二届信息技术奥赛真题.doc
  8. java分布式开发 毕玄_阿里毕玄:RPC 框架优化之路,从 37k 到 168k
  9. DRN(CVPR2020)Dual Regression Networks
  10. 34. 指针和字符串