ASL
是查找算法的查找成功时的平均查找长度的缩写,是为确定记录在查找表中的位置,需和给定值进行比较的关键字个数的期望值。

P(i)=查找表中第i个记录的概率 C(i)=关键字与给定值相等的第i个记录时,和给定值 进行过比较的关键字个数。

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

其中n为查找表中元素个数,Pi为查找第i个元素的概率,通常假设每个元素查找概率相同,Pi=1/n,Ci是找到第i个元素的比较次数。当然,有查找成功,就有查找不成功,即要查找元素不在查找表中。针对不同查找方式的查找成功与不成功,一个算法的ASL越大,说明时间性能差,反之,时间性能好,这也是显而易见的。

在顺序查找(Sequence Search)表中,查找方式为从头扫到尾,找到待查找元素即查找成功,若到尾部没有找到,说明查找失败。所以说,Ci(第i个元素的比较次数)在于这个元素在查找表中的位置,如第0号元素就需要比较一次,第一号元素比较2次…第n号元素要比较n+1次。所以Ci=i;所以

可以看出,顺序查找方法查找成功的平均 比较次数约为表长的一半。当待查找元素不在查找表中时,也就是扫描整个表都没有找到,即比较了n次,查找失败

折半查找(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个结点判定树中,总数

,所以判定树高度为

的满二叉树,第i层上结点个数为

,查找该层上的结点需要进行i次比较,因此,在等概率情况下ASL为

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

首先画出判定树,

即25查找一次,成功,10,30要查找2次,成功,2,15,28,35要查找3次,成功,3,20,29,40要查找4次,成功。 而不成功的平均查找长度为

,为什么这么算呢,因为内部结点都能查找成功,而查找不成功的就是那些空的外部结点,所以到查询到2的左孩子,15的左孩子,28的左孩子,35的左孩子,3的左右孩子,20的左右孩子,29的左右孩子,40的左右孩子时,都是查找不成功的时候。如我要找1,比25小,转向左子树,比较一次,比10小,转左子树,2次,比2 小,转左子树,3次,此时2无左子树,所以失败。所以


哈希表中的ASL 查找成功的平均查找长度是指查找到哈希表中已有关键字的平均探测次数。而查找不成功的平均查找长度是指在哈希表中找不到待查的元素,最后找到空位置元素的探测次数平均值

AVL树
AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为1,所以它也被称为高度平衡树。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。


平衡点的问题
贴出我的一些图片


ASL、AVL 知识学习相关推荐

  1. 虚幻引擎的数学知识学习教程 Math for Unreal Engine (Early Preview)

    通过做真实世界的 Unreal Engine项目来学习数学 你会学到什么 理解游戏开发对数学的基本需求 将数学直接应用到用例中,而不是钻研理论(用我们的示例项目进行实践) 正确编辑短视频,节省您的时间 ...

  2. 三代测序知识学习----Sequel

    三代测序知识学习----Sequel (2017-03-26 22:38:34) 转载▼   分类: 三代 知识链接:http://www.pacb.com/blog/new-chemistry-so ...

  3. 计算机二级二叉树基础知识,2017年计算机二级公共基础知识学习教程:树与二叉树...

    (六)树与二叉树 1.树的基本概念 树是一种简单的非线性结构.在树结构中,数据元素之间有着明显的层次结构.在树的图形表示中,用直线连接两端的结点,上端点为前件,下端点为后件. 在树结构中,每一个结点只 ...

  4. c语言运算符ppt,C语言知识学习运算符.ppt

    C语言知识学习运算符.ppt 第三章,C语言运算符,回顾,变量和常量的含义 熟悉基本数据类型 - int.char.float 和 double 使用算术运算符 理解类型转换 熟练使用 scanf 和 ...

  5. 安全测试3_Web后端知识学习

    其实中间还应该学习下web服务和数据库的基础,对于web服务大家可以回家玩下tomcat或者wamp等东西,数据库的话大家掌握基本的增删该查就好了,另外最好掌握下数据库的内置函数,如:concat() ...

  6. Python 基础知识学习笔记——NumPy

    Python基础知识学习笔记--NumPy 与 matlab 优秀的矩阵运算类似,python 提供了 numpy 库,这对熟悉 matlab 的用户来说非常友好.向量.矩阵和多维数组是数值计算中必不 ...

  7. Python 基础知识学习笔记——OpenCV(1)

    Python 基础知识学习笔记--OpenCV(1) OpenCV是一个开源的跨平台计算机视觉和机器学习软件库,它轻量而且高效,被广泛的使用. 整理一下OpenCV学习笔记,以防忘记. 文章目录 Py ...

  8. Python基础知识学习笔记——Matplotlib绘图

    Python基础知识学习笔记--Matplotlib绘图 整理python笔记,以防忘记 文章目录 Python基础知识学习笔记--Matplotlib绘图 一.绘图和可视化 1.导入模块 2.一个简 ...

  9. python基础知识学习笔记(2)

    python基础知识学习笔记(2) 整理一下python基础知识,以防忘记 文章目录 python基础知识学习笔记(2) python简洁的一行代码 python简洁的一行代码 1.交换两个变量 # ...

最新文章

  1. 目标检测--Enhancement of SSD by concatenating feature maps for object detection
  2. spring boot 项目源码_Spring Boot2 系列教程(三)理解 Spring Boot 项目中的 parent
  3. java连接rabbitmq_没用过消息队列?一文带你体验RabbitMQ收发消息
  4. akka框架——异步非阻塞高并发处理框架
  5. 机器人II(sdutoj2585)-JAVA
  6. Debug pycharm: Error running *.py, cannot run program, No such file or pragram
  7. jq之text() html()
  8. 物联网协议比较 MQTT CoAP RESTful/HTTP XMPP
  9. C语言 计算日期是当年的第几天
  10. java setr()_Java RPr.setRFonts方法代码示例
  11. 剑指offer:对称的二叉树(镜像,递归,非递归DFS栈+BFS队列)
  12. 如何把信息做成二维码?如何制作二维码的内容?
  13. 数据预处理和特征工程1--无量纲化:数据归一化、标准化
  14. Prim算法、Kruskal算法
  15. iOS 开发者账号持有人转让最新方式
  16. 小程序设置渐变色背景
  17. 测试开发常问面试题整理-----网络篇
  18. Python爬虫入门教程 65-100 爬虫与反爬虫的修罗场,点评网站,字体反爬之三
  19. 2016年8月16日 星期二 --出埃及记 Exodus 16:17
  20. Android学习笔记:Android基础知识点(不断更新中)

热门文章

  1. 单向LSTM与双向LSTM对比
  2. 信息安全服务资质如何认证?办理周期多久?
  3. 一个特殊静态页面的处理---静态页面实现流程图
  4. 企业搭建小型直播间、中型直播间、大型直播间的介绍
  5. coreldraw x4如何出血_CorelDRAW如何设置出血位
  6. 气雾栽培计算机控制系统,丽水市农林院农业智能化快繁中心,气雾栽培,气雾培,鸟巢温室,克隆,植物克隆,克隆技术,植物非试管快繁技术,鱼菜共生,丽水农林院...
  7. 360良医搭载人工智能 让互联网医疗信息服务更精准
  8. InnoSetup打包工具使用;C#打包工具;VB打包工具;EXE打包工具;C++打包工具
  9. JAVA毕业设计教师继续教育计算机源码+lw文档+系统+调试部署+数据库
  10. 09月02日星期一 恒指/美原油/美黄金 走势分析