关于B+树的总结

news2024/9/24 9:19:08

B树(B-tree)

B树属于多叉树又名平衡多路查找树(查找路径不只两个),数据库索引技术里大量使用着B树和B+树的数据结构

  • 规则:

(1)排序方式:所有节点关键字是按递增次序排列,并遵循左小右大原则;

(2)子节点数:非叶节点的子节点数>1,且<=M ,且M>=2,空树除外(注:M阶代表一个树节点最多有多少个查找路径,M=M路,当M=2则是2叉树,M=3则是3叉);

(3)关键字数:枝节点的关键字数量大于等于ceil(m/2)-1个且小于等于M-1个(注:ceil()表示向上取整 如ceil(1.1)结果为2);

(4)所有叶子节点均在同一层、叶子节点除了包含了关键字和关键字记录的指针外也有指向其子节点的指针只不过其指针地址都为null对应下图最后一层节点的空格子;

B+树

  • 规则
  1. 每一个父节点的元素都出现在子节点中,是子节点的最大(最小)元素,因此根节点的最大元素也是整个B+树的最大元素。

(2)每一个叶子结点都带有指向下个节点的指针,形成了一个有序链表。

(3)只有叶子结点有其索引指向的数据记录,中间节点仅是索引。

B+树的特征:

1.有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点

2.所有的叶子结点包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。(链表

3.所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素

4、B+树查找时是从上到下查找B-树则是从下往上查找中序遍历

B+树的优势:

1.单一节点存储更多的元素(这样该节点下分支变多了,树变矮胖了),使得查询的IO次数更少。

2.所有查询都要查找到叶子节点,查询性能稳定。

3.所有叶子节点形成有序链表,便于范围查询

ASL平均查找长度:

设关键字个数为n,在各关键字等概率查找的前提下,
1、顺序查找的平均查找长度ASL=(n+1)/2,
2、在n趋于无穷大时,折半查找的ASL=((n+1)log2(n+1))/n - 1,当n大于50时,ASL约等于log2(n+1)-1
3、设分块查找中将长为 n 的表分成均等的 b 个块,每块 s 个元素,则 b = (n / s)上取整,如果索引表中采用顺序查找,则ASL=(b+1)/2+(s+1)/2;如果索引表中采用折半查找,则ASL=(s+1)/2+log2(b+1)-1

折半查找:

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

分块查找:

分块查找又称索引顺序查找,它是顺序查找的一种改进方法

  算法流程:

  • 先选取各块中的最大关键字构成一个索引表
  • 查找分两个部分:先对索引表进行二分查找顺序查找,以确定待查记录哪一块中;然后,在已确定的块中用顺序法进行查找。

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

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

相关文章

浅析RoPE旋转位置编码的远程衰减特性

为什么 θ i \theta_i θi​的取值会造成远程衰减性 旋转位置编码的出发点为&#xff1a;通过绝对位置编码的方式实现相对位置编码。 对词向量 q \boldsymbol{q} q添加绝对位置信息 m m m&#xff0c;希望找到一种函数 f f f&#xff0c;使得&#xff1a; < f ( q , m ) …

技术资讯:Firefox浏览器即将被淘汰?

大家好&#xff0c;我是大澈&#xff01; 本文约1200字&#xff0c;整篇阅读大约需要2分钟。 感谢关注微信公众号&#xff1a;“程序员大澈”&#xff0c;免费领取"面试礼包"一份&#xff0c;然后免费加入问答群&#xff0c;从此让解决问题的你不再孤单&#xff01…

OpenHarmony开发—Ubuntu环境搭建

搭建Ubuntu环境 在嵌入式开发中&#xff0c;很多开发者习惯于使用Windows进行代码的编辑&#xff0c;比如使用Windows的Visual Studio Code进行OpenHarmony代码的开发。但当前阶段&#xff0c;大部分的开发板源码还不支持在Windows环境下进行编译&#xff0c;如Hi3861、Hi3516…

高高。。。。

重点&#xff1a;存储系统/分布式系统 得到数据&#xff1a; 数据模型计算&#xff08;简单系统&#xff09;实现一个操作系统CPU&#xff08;成本高&#xff09;仿真实验 文章类型&#xff1a; 国际会议 10-15slices期刊论文 做OS研究为其他方面提供支持 一 Advanced OS …

【VScode和Leecode的爱恨情仇】command ‘leetcode.signin‘ not found

文章目录 一、关于command ‘leetcode.signin‘ not found的问题二、解决方案第一&#xff0c;没有下载Nodejs&#xff1b;第二&#xff0c;有没有在VScode中配置Nodejs第三&#xff0c;力扣的默认在VScode请求地址中请求头错误首先搞定配置其次搞定登入登入方法一&#xff1a;…

C++命名空间(超详细)using namespace std

文章目录 前言一、为什么要有命名空间二、命名空间的定义1.正常定义2.嵌套定义3.多文件 三、命名空间的使用1.命名空间名称作用域限定符2.使用using将命名空间某个成员引入3.使用using namespace将整个命名空间引入 四、c标准库总结 前言 在本文章中&#xff0c;我们将要详细介…

【CANoe】CAPL中测试控制函数和故障注入函数的使用

文章目录 1、介绍2、示例脚本【可结合总线报文的变化进行理解】 1、介绍 2、示例脚本【可结合总线报文的变化进行理解】 testcase TC01() {TestCaseTitle("TC01","TC01");//示例1&#xff1a;禁止/使能发送BMS_100ms这帧报文testDisableMsg(BMS_100ms);te…

llvm后端之DAG设计

llvm后端之DAG设计 引言1 核心类设计2 类型系统2.1 MVT::SimpleValueType2.2 MVT2.3 EVT 3 节点类型 引言 llvm后端将中端的IR转为有向无环图&#xff0c;即DAG。如下图&#xff1a; 图中黑色箭头为数据依赖&#xff1b;蓝色线和红色线为控制依赖。蓝色表示指令序列化时两个节…

windows远程桌面怎么开启?

文章目录 如下三种开启方式&#xff0c;任选一即可方式1.在系统属性中开启远程桌面方式2.通过系统设置开启远程桌面方式3.注册表编辑器开启远程桌面使用远程桌面 如下三种开启方式&#xff0c;任选一即可 配合 组网工具或者内网穿透 超级爽 局域网其他pc如何访问宿主机虚拟机IP…

C语言—每日选择题—Day57

指针相关博客 打响指针的第一枪&#xff1a;指针家族-CSDN博客 深入理解&#xff1a;指针变量的解引用 与 加法运算-CSDN博客 第一题 1. 下面程序段&#xff08;&#xff09; char *str[] {"ABC", "DEF", "GHI"}; puts(str[1]); A&#xff1a;A…

设计模式——外观模式(Facade Pattern)

概述 外观模式又称为门面模式&#xff0c;它通过引入一个外观角色来简化客户端与子系统之间的交互&#xff0c;为复杂的子系统调用提供一个统一的入口&#xff0c;降低子系统与客户端的耦合度&#xff0c;且客户端调用非常方便。它是一种对象结构型模式。外观模式结构图如下所示…

DriveWorks Solo捕获参数(三)

捕获参数 - 木门和矩形窗 木质门 下一个组件是木门本身。除了尺寸之外&#xff0c;门还具有需要控制的功能。 让我们首先捕获尺寸。 通过单击“捕获资源管理器”中的标题来激活“捕获的模型”部分。 双击任务窗格树中的模型木门以在 SOLIDWORKS 中将其打开。捕获以下尺寸。…

Apache Kyuubi 讲解与实战操作

文章目录 一、概述二、Spark Kyuubi 架构三、Hadoop 基础环境安装1&#xff09;hadoop 下载部署包2&#xff09;创建网络3&#xff09;部署MySQL4&#xff09;部署 Hadoop Hive 四、Spark Kyuubi 安装1&#xff09;下载 Kyuubi2&#xff09;下载 Spark32&#xff09;配置 Kyuub…

final的详解

在Java中&#xff0c;final 关键字用于表示不可改变的实体&#xff0c;可以应用于变量、方法、类和指令重排序。它有不同的作用&#xff0c;具体取决于它被应用的上下文。 1.对于变量&#xff1a; 如果一个变量被声明为 final&#xff0c;则该变量的值在一旦被赋予后就不能再被…

excel该如何实现生成条形码/二维码?

如何在Excel中制作条形码/二维码&#xff1f; 1.首先&#xff0c;打开电脑上的Excel。进入后&#xff0c;在上方菜单栏中找到并点击“开发工具”。如果没有找到开发工具&#xff0c;就先点击“文件”&#xff0c;在弹出菜单中再点击“选项”。 2.打开Excel选项窗口后&#xff0…

循环栅栏:CyclicBarrier

CyclicBarrier可以理解为循环栅栏&#xff0c;栅栏就是一种障碍物&#xff0c; 比如通常在私人宅院的周围就可以围上一圈栅栏&#xff0c;阻止闲杂人等入内。 这里当然就是用来阻止线程继续执行&#xff0c;要求线程在栅栏外等待。 前面的Cyclic意为循环&#xff0c;也就是说这…

【轻量化篇】YOLOv8改进实战 | 更换主干网络 Backbone 之 RepGhostnet,重参数化实现硬件高效的Ghost模块

YOLOv8专栏导航:点击此处跳转 前言 轻量化网络设计是一种针对移动设备等资源受限环境的深度学习模型设计方法。下面是一些常见的轻量化网络设计方法: 网络剪枝:移除神经网络中冗余的连接和参数,以达到模型压缩和加速的目的。分组卷积:将卷积操作分解为若干个较小的卷积操…

cpp_04_类_对象_this指针_常对象_常(成员)函数

1 类 1.1 类的定义 类的作用是抽象事物&#xff08;抽取事物特征&#xff09;的规则。 类的外化表现是用户自定义的复合数据类型&#xff08;包括成员变量、成员函数&#xff09;&#xff1a; 成员变量用于表达事物的属性&#xff0c;成员函数用于表达事物的行为。 类的表现…

基于LSTM的情感分析

本文以情感分析为主题&#xff0c;介绍了其在自然语言处理中的重要性以及应用场景。传统的循环神经网络&#xff08;RNN&#xff09;在处理长序列时存在问题&#xff0c;而引入了记忆细胞、输入门、输出门和遗忘门的LSTM模型能够有效解决这一问题。数据集和预处理在机器学习和自…

内外联动——记建行江门鹤山支行营业部成功堵截诈骗

“谢谢&#xff0c;太谢谢你们了&#xff01;真没想到&#xff0c;现在骗子手段这么高了&#xff0c;冒充我孙儿太像了。要不是你们一直拦着我&#xff0c;差点就把养老钱汇出去了&#xff01;”近日&#xff0c;在建行江门鹤山支行营业部大厅里&#xff0c;一位老人家肖婆婆对…