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

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

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

长度为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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467054.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为开始对嵌入式开发者下手了!

5G时代到来,物联网技术的应用也离我们越来越近。智慧交通、智能家庭、智慧园区,越来越多的融入到我们的生活当中。作为物联网重要技术组成的嵌入式系统,嵌入式系统视角有助于深刻地、全面地理解物联网的本质。而物联网是通用计算机的互联网与…

二叉排序树和平衡二叉排序树

二叉排序树又称为二叉查找树,它是一颗特殊的二叉树。(空树) 性质:1、若它的左子树非空,则左子树上的所有结点的值均小于根结点的值。 2、若它的右子树非空,则右子树上的所有结点的值均大于根结点的值。 3、…

FUSE文件系统

Fuse(filesystem in userspace),是一个用户空间的文件系统。通过fuse内核模块的支持,开发者只需要根据fuse提供的接口实现具体的文件操作就可以实现一个文件系统。由于其主要实现代码位于用户空间中,而不需要重新编译内核,这给开发者带来了众…

数组 的地址计算

数组是一个特殊的数据结构,数组的基本操作不涉及数组结构的变化,因此对于数组而言,采用顺序存储表示比较合适。数组的顺序存储结构有两种:一、以行序存储,如高级语言BASIC、COBOL、Pascal、c语言。二、以列序存储&…

你会选择深圳还是佛山?

最近是校招季节,有很多人在询问offer的问题,我知道我已经发了很多这样相关的文章,可能大家看着都有点不耐烦了,不过还是想说,人生重要的选择真的没有几个,我每次回答都特别慎重,我有时候发出来也…

optimizer

在很多机器学习和深度学习的应用中,我们发现用的最多的优化器是 Adam,为什么呢? 下面是 TensorFlow 中的优化器, https://www.tensorflow.org/api_guides/python/train 在 keras 中也有 SGD,RMSprop,Adagr…

【漫画】25岁程序员 VS 35岁程序员,塑造自己的不可替代性,才能让自己更有价值 ​...

其中的酸甜苦辣你中了几条经常有人说:35岁是程序员的魔咒。但其实相比于刚毕业的年轻人,虽然35岁的程序员从精力上和年龄上都不再占有优势,但十几年的沉淀所造就的从容也是这个年龄段所独有的。当然,也不只是程序员,任…

WIN命令

azman.msc--授权管理器admgmt.msc--ad管理calc-----------启动计算器certmgr.msc--证书-当前用户certtmpl.msc--证书模板 compmgmt.msc---计算机管理conf-------启动netmeetingcys--配置您的服务器dcomcnfg.exe--组件服务dcpol.msc--域控制器策略 filesvr.msc--文件…

你确定你会使用git commit?

我记得刚工作的时候,我第一次写git commit的内容,直接上来就是一个git commit -m "加上自己的注释",就这样提交了。后来,我去了中兴,又去了恒大,接触到很多人做项目,发现做项目的时候…

adb devices unauthorized解决方法

有时候使用adb连接手机时,即使打开了usb调试,手机添加了信任,仍然出现unauthorized的提示 解决办法如下: 先上两张stack overflow上面的图片: 很多人可能看不懂。翻一下大概如下: 也就是在 C:\Users\xxx\.a…

可怕,别人把我MCU固件给反汇编了!

相关文章很多人都不清楚HEX文件格式CPU怎么认识代码的?一个超强的逆向分析软件本文主要跟大家分享一个简单逆向stm32固件程序的实例,为了让大家在一款成熟的产品中去考虑加密这一块的技术,不然分分钟被别人copy!2、情景再现咬金&a…

带参数的宏定义

不是进行简单的字符串替换,还要进行参数替换。其定义的一般形式为#define 宏名(参数表) 字符串字符串中包含在括弧中所指定的参数。如:#define S(a,b) a*bareaS(3,2);定义矩形面积S,a 和 b 是边长。在程序中用了S(3,2),把3、2分别…

电脑控制android手机神器,scrcpy

我同事有一个华为手机,手机里内置了NFC,然后把手机靠近下电脑,当然的,一定需要是华为笔记本,然后电脑就弹出一个界面,控制手机的界面,这个功能非常好,加上NFC的功能,体验…

Modbus协议概念最详细介绍

★一文认识Modbus协议;”1 什么是Modbus?2 主从模式3 协议的分类3.1 Modbus ASCII3.2 Modbus RTU3.3 Modbus TCP3.4 Modbus Plus4 libmodbus5 freemodbus6 总结1 什么是Modbus?Modbus是Modicon(施耐德)公司于1979年开发…

OpenvSwitch实现kubernetes依赖的底层网络

kubernetes网络模型设计的一个基础原则是:每个Pod都拥有一个独立的IP地址,而且假定所有Pod都在一个可以直接连通的、扁平的网络空间中(在GCE里面是现成的网络模型)。在kubernetes中,IP是以Pod为单位进行分配的。一个Po…

该不该放弃嵌入式,单片机这条路?

知乎提问:本人,一个毕业工作两年在深圳工作的菜鸟单片机工程师。说说这两年来自己的一些看法。个人语言表述能力较差,加之经验不足,望见谅。1.程序编写1.1对架构能力要求较高。比如做一个自动售卖咖啡机,在开始写之前要…

6月份Asp.net源码推荐

整理了一下51aspx上6月份的Asp.net源码,特推荐一些给大家免费下载- 阿江酷站统计系统ASP.Net修正版Hits:262 2007-6-29阿江酷站单用户访问统计系统ASP.Net修正版 通过在要统计的页面潜入js脚本就可以对访问进行详细统计,可以按小时、日、月、年进行柱状图…

在家工作多年再回深圳找工作,会不会丢脸?

jiy发哥好。职场难题,江湖救急,请教你: 我刚毕业曾在深圳待过,那时候真是菜得什么都不会,折腾来折腾去一直没找到合适的坑,所以混了一两年又回老家小城市了。 小城市待遇普通,工作机会不多&…

数独

数独 时间限制:1000 ms | 内存限制:65535 KB难度:4描述数独是一种运用纸、笔进行演算的逻辑游戏。玩家需要根据99盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个3*3宫内的数字均含1-9&…

Linux内存寻址方式

为什么要内存管理:早期的程序都是直接运行在物理地址上,也就是说这个程序所需要的空间不超过该机器的物理内存就不会有问题,但实际场景中都是多任务,多进程的,这种物理地址reserved给各个进程是不靠谱的。举个栗子&…