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

从折半查找的过程看,以有序表的中间记录作为比较对象,并以中间记录将表分割为两个子表,对子表继续上述操作。所以,对表中每个记录的查找过程,可用二叉树来描述,二叉树中的每个结点对应有序表中的一个记录,结点中的值为该记录在表中的位置。通常称这个描述折半查找过程的二叉树为折半查找判定树。

长度为n的折半查找判定树的构造方法为:

⑴ 当n=0时,折半查找判定树为空;

⑵ 当n>0时,折半查找判定树的根结点是有序表中序号为mid=(n+1)/2的记录,根结点的左子树是与有序表r[1] ~ r[mid-1]相对应的折半查找判定树,根结点的右子树是与r[mid+1] ~ r[n]相对应的折半查找判定树。

例如,长度为10的折半查找判定树的具体生成过程为:

⑴ 在长度为10的有序表中进行折半查找,不论查找哪个记录,都必须先和中间记录进行比较,而中间记录的序号为(1+10)/2=5(注意是整除即向下取整),即判定树的根结点是5,如图7-2(a)所示;

⑵ 考虑判定树的左子树,即将查找区间调整到左半区,此时的查找区间是

[1,4],也就是说,左分支上为根结点的值减1,代表查找区间的高端high,此时,根结点的左孩子是(1+4)/2=2,如图7-2(b)所示;

⑶ 考虑判定树的右子树,即将查找区间调整到右半区,此时的查找区间是

[6,10],也就是说,右分支上为根结点的值加1,代表查找区间的低端low,此时,根结点的右孩子是(6+10)/2=8,如图7-2(c)所示;

⑷ 重复⑵⑶步,依次确定每个结点的左右孩子,如图7-2(d)所示。

对于折半查找判定树,需要补充以下两点: 
⑴ 折半查找判定树是一棵二叉排序树,即每个结点的值均大于其左子树上所有结点的值,小于其右子树上所有结点的值; 
⑵ 折半查找判定树中的结点都是查找成功的情况,将每个结点的空指针指向一个实际上并不存在的结点——称为外结点,所有外结点即是查找不成功的情况,如图7-2(e)所示。如果有序表的长度为n,则外结点一定有n+1个。 在折半查找判定树中,某结点所在的层数即是查找该结点的比较次数,整个判定树代表的有序表的平均查找长度即为查找每个结点的比较次数之和除以有序表的长度。例如,长度为10的有序表的平均查找长度为: 
ASL=(1×1+2×2+3×4+4×3)/10=29/10 
在折半查找判定树中,查找不成功时的比较次数即是查找相应外结点时与内结点的比较次数。整个判定树代表的有序表在查找失败时的平均查找长度即为查找每个外结点的比较次数之和除以外结点的个数。例如,长度为10的有序表在查找失败时的平均查找长度为: 
ASL=(3×5+4×6)/11=39/11

折半查找判定树及平均查找长度相关推荐

  1. 折半查找判定数及平均查找长度(一定要看这 能看懂的)

    折半查找判定数及平均查找长度 折半查找的过程看,可用二叉树来描述,二叉树中的每个结点对应有序表中的一个记录,结点中的值为该记录在表中的位置.通常称这个描述折半查找二叉树的过程称为折半查找判定树. 例如 ...

  2. 折半查找判定树的画法(较简单易懂!)

    复习数据结构做的笔记: 折半查找判定树的画法思路: 1.先画出满足有序表长度的最大满二叉树,然后将剩下的结点个数一个个插入该树 2.从上往下看,比较每个结点的左右子树结点个数,如果左右子树结点个数相同 ...

  3. 关于折半查找判定树的例题

    一个有序表为{1,3,9,12,32,41,45,62,75,77,82,95,100}.给出折半查找的判定树,以及查找82.4的过程(依次和哪些元素比较),查找成功时的平均查找长度.

  4. 【折半查找判定树画法思路】

    折半查找判定树画法思路: 1.先画出满足有序表长度的最大满二叉树,然后将剩余结点个数一个个插入该树.[二叉树前n层最多(2^n)-1个结点,第n层最多2^(n-1)个结点] 2,从上往下看,比较每个结 ...

  5. 数据结构 | 折半查找 /二分查找 算法细节、二分查找判定树

    一.基本思想 假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功:否则利用中间位置记录将表分成前.后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步 ...

  6. 折半查找判定树的高度-思路分享

    折半查找判定树的高度分析 最近看到一道题,在说有序数据集,长度为n时,其最大查找长度为多少 我们知道折半查找每次分块,左半部分占n/2的长度, 中间的单个元素被剔除, 右半部分占有剩下的元素, 因此找 ...

  7. 判断二叉树是否能成为折半查找判定树

    判断二叉树是否能成为折半查找判定树 如下题 分别给其编上序号,(注意该二叉树中序遍历为有序数列(前提)) 对于B 对于C: 1和4:(1+4)/2向下取整为2,而3和4:(3+4)/2向下取整为3,当 ...

  8. 折半查找判定树——(快速判断某棵树是否为折半查找判定树)

    折半查找 也被称作二分查找,即将需要查找的元素与数组中间的元素进行比较:若比中间的元素小,则再与前子表的中间元素进行比较,以此类推直至查找到所需查找元素,或者所需查找元素不在此表中. 折半查找判定树( ...

  9. 二叉排序树(查找树)平均查找长度(成功和不成功)

    如图所示的二叉排序树 查找成功的平均查找长度为:∑(本层高度*本层元素个数)/节点总数=(1*1+2*2+3*3+3*4)/9 查找不成功的平均查找长度:∑(本层高度*本层补上的叶子个数)/补上的叶子 ...

最新文章

  1. [转] 使用模板自定义 WPF 控件
  2. 成功解决but is 0 and 2 (computed from start 0 and end 9223372 over shape with rank 2 and stride-1)
  3. Android 检查设备是否存在 导航栏 NavigationBar
  4. 腾讯商业数据分析师培养计划
  5. 并发编程之多线程线程安全(上)
  6. easyui,layui和 vuejs 有什么区别
  7. PyTorch之实现LeNet-5卷积神经网络对mnist手写数字图片进行分类
  8. Java - HashMap源码解析
  9. arm cpu的架构及分类说明
  10. 亭台六七座,八九十枝花——python正则表达
  11. php 微信 爬虫 源码,【程序源代码】微信爬虫
  12. 零基础想考华为认证,该怎么学?
  13. 南京师范大学计算机考研2021,南京师范大学2021考研分数线已公布
  14. python+FTP 批量上传文件
  15. Multisim10中仿真时间步长与数码显示管的类型有关
  16. 基于vue的分享插件
  17. C#开发:创建gif图片
  18. Simple java里面的paint(Graphics g)的理解
  19. 都说it是吃青春饭的,那些35岁左右的it女技术人员(测试)都在做啥呢?转行了吗?
  20. 科学家研发独特AI算法:用WiFi监测你是否在做梦

热门文章

  1. 网络爬虫--25.【selenium实战】实现拉勾网爬虫之--selenium获取数据
  2. 40天python入门教程_Python入门教程超详细1小时学会Python
  3. TensorFlow 简介
  4. andriod studio 运行 无结果_华为物联网操作系统LiteOS内核教程01——IoT-Studio介绍及安装...
  5. 【MySQL 】学习笔记千行总结
  6. 机器学习之聚类算法的原理推导及相关知识总结
  7. 图像处理之积分图应用三(基于NCC快速相似度匹配算法)
  8. C/C++关键字解析
  9. Linux命令行显示无效的命令,LINUX 命令ifconfig 无效
  10. win10商店下载位置_Win10删应用商店下载记录|Win10删Microsoft Store下载记录