B-树小结

五段式S型算法笔记 又因为有 v-v0= 0.5jt通式: 所以有 vm-v0= 0.5jtm 所以有4vm-4v0= 2jtm。算法1: v=2vm-v0-0.5*jt+2jt*tm-2jtm*tm。加加速度j 自己设置 已知,vmax自己设置已知;所以有4vm-4v0= 2jtm带入算法1。 阅读详情

1、定义与特性

B-树是一种平衡的多路查找树,在文件系统中有所应用。主要用作文件的索引。2-3树、2-3-4树都属于B-树。

B-树结构特性:

      一棵m阶B-树,或为空树,或为满足下列特性的m叉树:(m≥3)

(1)根结点只有1个,关键字字数的范围[1,m-1],分支数量范围[2,m];

(2)除根以外的非叶结点,每个结点包含分支数范围[[m/2],m],即关键字字数的范围是[[m/2]-1,m-1],其中[m/2]表示取大于m/2的最小整数;

(3)非叶结点是由叶结点分裂而来的,所以叶结点关键字个数也满足[[m/2]-1,m-1];

(4)所有的非终端结点包含信息:(n,P0,K1,P1,K2,P2,……,Kn,Pn),

    其中Ki为关键字,Pi为指向子树根结点的指针,并且Pi-1所指子树中的关键字均小于Ki,而Pi所指的关键字均大于Ki(i=1,2,……,n),n+1表示B-树的阶,n表示关键字个数,即[ceil(m / 2)-1]<= n <= m-1;

(5)所有叶子结点都在同一层,并且指针域为空,具有如下性质:

  根据B-树定义,第一层为根有一个结点,至少两个分支,第二层至少2个结点,i≥3时,每一层至少有2乘以([m/2])的i-2次方个结点([m/2]表示取大于m/2的最小整数)。若m阶树中共有N个结点,那么可以推导出N必然满足N≥2*(([m/2])的h-1次方)-1 (h≥1),因此若查找成功,则高度h≤1+log[m/2](N+1)/2,h也是磁盘访问次数(h≥1),保证了查找算法的高效率。

下图给出了典型的3阶B-树


2.基本操作

这里只给出插入删除操作,查找操作相对简单的多 这里不做解释

 1)B-树的插入操作(重点判断是否满足n<=m-1)

      a.利用前述的B-树的查找算法查找关键字的插入位置。若找到,则说明该关键字已经存在,直接返回。否则查找操作必失败于某个最低层的非终端结点上。

      b.判断该结点是否还有空位置。即判断该结点的关键字总数是否满足n<=m-1。若满足,则说明该结点还有空位置,直接把关键字k插入到该结点的合适位置上。若不满足,说明该结点己没有空位置,需要把结点分裂成两个。

分裂的方法是:生成一新结点。把原结点上的关键字和k按升序排序后,从中间位置把关键字(不包括中间位置的关键字)分成两部分。左部分所含关键字放在旧结点中,右部分所含关键字放在新结点中,中间位置的关键字连同新结点的存储位置插入到父结点中。如果父结点的关键字个数也超过(m-1),则要再分裂,再往上插。直至这个过程传到根结点为止。





2).B-树的删除操作(重点判断删除所在结点及其兄弟结点,父结点中n>ceil(m/2)-1,n=ceil(m/2)-1,n<ceil(m/2)-1)

在B-树上删除关键字K的过程也可以分为两步完成

a.利用前述的B-树的查找算法找出该关键字所在的结点。然后根据 k所在结点是否为叶子结点有不同的处理方法。

b.若该结点为非叶结点,且被删关键字为该结点中第i个关键字key[i],则可从指针son[i]所指的子树中找出最小关键字Y,代替key[i]的位置,然后在叶结点中删去Y。因此,把在非叶结点删除关键字k的问题就变成了删除叶子结点中的关键字的问题了。

 

在B-树叶结点上删除一个关键字的方法是

首先将要删除的关键字 k直接从该叶子结点中删除。然后根据不同情况分别作相应的处理,共有三种可能情况:

  a.如果被删关键字所在结点的原关键字个数n>=ceil(m/2),说明删去该关键字后该结点仍满足B-树的定义。这种情况最为简单,只需从该结点中直接删去关键字即可。

  b.如果被删关键字所在结点的关键字个数n等于ceil(m/2)-1,说明删去该关键字后该结点将不满足B-树的定义,需要调整。

   调整过程为:如果其左右兄弟结点中有“多余”的关键字,即与该结点相邻的右(左)兄弟结点中的关键字数目大于ceil(m/2)-1。则可将右(左)兄弟结点中最小(大)关键字上移至双亲结点。而将双亲结点中小(大)于该上移关键字的关键字下移至被删关键字所在结点中。

   c.如果左右兄弟结点中没有“多余”的关键字,即与该结点相邻的右(左)兄弟结点中的关键字数目均等于ceil(m/2)-1。这种情况比较复杂。需把要删除关键字的结点与其左(或右)兄弟结点以及双亲结点中分割二者的关键字合并成一个结点,即在删除关键字后,该结点中剩余的关键字加指针,加上双亲结点中的关键字Ki一起,合并到Ai(即双亲结点指向该删除关键字结点的左(右)兄弟结点的指针)所指的兄弟结点中去。如果因此使双亲结点中关键字个数小于ceil(m/2)-1,则对此双亲结点做同样处理。以致于可能直到对根结点做这样的处理而使整个树减少一层。

总之,设所删关键字为非终端结点中的Ki,则可以指针Ai所指子树中的最小关键字Y代替Ki,然后在相应结点中删除Y。对任意关键字的删除都可以转化为对最下层关键字的删除。





SRC:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/25/2608412.html



PyMuPDF为PDF文件添加注释 我将介绍如何使用PyMuPDF库来为PDF文件添加注释,包括文本注释、高亮注释、下划线注释等15种注释的使用方法。 阅读详情

相关推荐

Ubuntu使用cmake出现Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed

解决 Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed

qq_44225529的博客 1万+

B-树(B树)详解

https://www.jianshu.com/p/7dedb7ebe033 具体讲解之前,有一点,再次强调下:B-树,即为B树。因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,其实,这是个非常不好的直译,很容易让人产生误解。如人们可能会以为B-树是一种树,而B树又是一种树。而事实上是,B-tree就是指的B树。特此说明。 1、B-树(B树)的基本概念 B-树中所有结点中孩子结点个数的最大值成为B-树的阶,通常用m表示,从查找效率考虑,一般要求m>=3。一棵m阶B-树或者

yygr的博客 3万+

从零到一:树莓派上的YOLO目标检测实战指南

本文详细介绍了如何在树莓派上部署和优化YOLO目标检测模型,从硬件选型到系统配置,再到模型转换与推理优化。通过对比不同树莓派型号的性能差异,提供实用的配置方案和代码示例,帮助开发者快速实现高效的边缘计算视觉系统。特别推荐使用ONNX格式进行模型转换,以提升在树莓派上的推理效率。

weixin_29046035的博客 1063

B-树、B树和B+树

B-树、B树和B+树总结介绍

小码农想做大架构的博客 9618

【MATLAB代码】TDOA+TOA融合算法,高精度定位。通过多边定位解算4个锚点、平面目标的位置,附代码

二维平面下的TOA、TDOA及混合定位算法,通过4个锚节点对目标点进行定位。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 211

V90伺服 EPOS模式下回原(详细配置+SCL源代码)

/ 输出上限 100.0%rSetPoint : Real;// 设置目标值工程量。// 通道转换参考值。Td : Real;

RXXW_Dor的博客 2664

算法-B-树、B树、B+树详解

书接上文——算法-查找算法-树表的查找(二叉排序树、平衡二叉树)(类C语言版)B-tree树即B树,B即Balanced,平衡的意思。因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,其实,这是个非常不好的直译,很容易让人产生误解。如人们可能会以为B-树是一种树,而B树又是另一种树。而事实上是,B-tree就是指的B树。B-树,磁盘管理系统中的目录管理,以及数据库系统中的索引组织多数都采用B-树这种数据结构。一棵m阶的B-树,或为空树,或为满足下列特性的m叉树: (1)树中每个结

秃了也弱了 7313

YOLOV12进阶:MSDA多尺度空洞注意力机制解析与实战,突破检测尺度瓶颈

在目标检测中,“尺度差异”是个老大难问题——大目标占据画面大半,小目标可能只有几个像素,普通模型很难同时精准检测。而MSDA(Multi-Scale Dilated Attention,多尺度空洞注意力)就像给模型配备了“变焦眼镜”,能同时关注不同尺度的目标,让YOLOV12在大、中、小目标检测上都能表现出色。这篇教程会带你从原理到实操,掌握这个强大的注意力机制,让你的检测模型真正“通吃”各种尺度的目标。MSDA的“多尺度空洞注意力”设计,是目标检测突破尺度瓶颈的关键一步。

know_F0727的博客 263

数据结构---B树

B-树B+树B*树的介绍以及B-树的模拟实现

qq_68695298的博客 5892

Transformer实战(40)——Transformer时间序列数据建模

Transformer 因其在自然语言处理 (Natural Language Processing, NLP) 任务中的优异表现而被广泛应用,其主要优势在于能够有效建模时间序列数据。这些数据可以是文本,也可以是非文本。本节将介绍如何使用 Transformer 进行时间序列数据建模和预测,将学习时间序列的基本概念,并在此基础上使用一个简单的模型,用以初步了解时间序列数据,并为各种预测任务奠定基础。

盼小辉丶的博客 2355

需要Perfetto分析的anr

anr类的问题,经常会有系统cpu,内存负载不高,iowait也不高,主线程状正常的,这类问题通过常规的日志无法分析,需要抓取Perfetto来分析应用的情况。event log中也没有异常。

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 63

B-树(高阶数据结构)

若树为空,直接插入新结点,该结点为树的根结点树非空,找待插入关键字在树中的插入位置(找到的插入结点位置一定是叶子结点)检测是否找到插入位置(假设树中的key唯一,即该元素已经存在时则不插入)按照插入排序的思想将该关键字插入到找到的结点中检测该结点关键字数量是否满足B-树的性质:即该节点中的元素个数是否等于M,若小于则满足,插入结束若插入后结点不满足B树的性质,需要对该结点进行分裂:申请新的兄弟结点找到该结点的中间位置将该结点中间位置右侧的元素以及其孩子搬移到新结点中。

GG_Bruse的博客 6555

AHB—SRAMC项目(结构图,核心代码、Testbench架构)

文章目录一、AHB_SRAMC项目介绍1.1.AHB总线控制单元(ahb_slv_if.v)1.2.SRAM控制单元(sramc_top.v)1.3.主要的传输路径二、结构框图2.1.AHB_SRAMC结构图(重点)2.2.总线控制单元与SRAM控制单元结构图三、部分核心代码(重点理解)四、SystemVerilog Testbench架构(重点)五、目录结构 一、AHB_SRAMC项目介绍 本项...

Mr.翟的博客 3万+

B树的小结

B树知识点整理 一、B-树就是B树 英文名字叫做B-tree,中间的短线是英文连接符,只是翻译的时候将短线翻译成了减号。 全称Balance-tree(平衡多路查找树),平衡的意思是左边和右边分布均匀。多路的意思是相对于二叉树而言的,二叉树就是二路查找树,查找时只有两条路,而B-tree有多条路,即父节点有多个子节点。 二、阶的概念 对于一棵m阶B-tree,每个结点至多可以拥有m个子结点。 即遍观整棵树,子节点最多的个数是m,那么这棵树就是m阶树 三、B-树的定义 (1)树中每个结点至多有m棵子树(注:m

日拱一卒,功不唐捐 648

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

(转)B树的一个很好的小结文

见到一篇B树很好的小结文 ,收藏之 http://www.themysql.com/mysql/b%e6%a0%91.html

jackyrongvip的专栏 667

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

B+树与B*树小结

转载:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/25/2608880.html 一、B+树 1.B+树定义与特性 B+树是B-树的变体,也是一种多路搜索树: 其定义基本与B-树同,除了: 1).非叶子结点的子树指针与关键字个数相同; 2).非叶子结点的子树指针P[i],指向关键字值属于[K[i], K[i+1])的子树

Linzhongyilisha的专栏 560

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

B树学习小结

B树的基本知识 1、B树的定义 对于m阶-B树,其指的是某个结点最多包含m-1个关键码,每个结点的子分支最多有m个。对于除了各节点以外的所有结点,每个结点所具有的内部关键码个数的取值范围为[⌈m/2⌉−1,m−1][\lceil m/2\rceil-1,m-1][⌈m/2⌉−1,m−1]。具有N个关键码的m阶B树的高度H的取值范围为[logm(N+1),log⌈m/2⌉⌊(N+1)/2⌋+1][l...

qq_37053885的博客 551

B树、B+树小结

B树 有n个分支的节点,有n-1个关键字,可以按照递增顺序排列,节点是在关键字中间空位置引出来的 节点内关键字互相不相等。 叶子节点在同一层 每个节点的存储空间是相同大小的,都是阶数-1 查找:从根节点扫描节点中的关键字, 要是找不到,就按照合适的分支到下一层查找,节点内有序数组。找到最下一层空指针,就没有查找到。 插入 先放好阶数-1个数,之后添加进行:节点拆分的操作。阶数/2下取整的位置,重新建立节点。也有可能拆分的节点放在上一层(要是上一层的节点有空位置的话),这种情况,左右俩半都是一个节点,上一

谁是凶手1703 203

mysql索引小结以及B树和B+树数据结构小结

一.前序: 索引(index)是存在于存储引擎层面的,不是所有的存储引擎都支持所有的索引类型,即使多种存储引擎支持同一种索引类型,它们的实现和行为可能也有区别. 二.索引类型:(数据结构的角度) a.B-tree索引: 常见...

chuiqueyu5654的博客 173

B-树小结汇总

 B-树小结汇总   本文很多内容均来源于网络,经过修改,因来源众多,不一一指出    当查找的文件较大,且存放在磁盘等直接存取设备中时,为了减少查找过程中对磁盘的读写次数,提高查找效率,基于直接存取设备的读写操作以"页"为单位的特征。  1972年R.Bayer和E.M.McCreight提出了一种称之为B-树的多路平

Erin_Tony的专栏 487

B+树小结

当磁盘读写成为了性能瓶颈,势必要优化存储结构以提升磁盘读取效率。 在平衡树(AVL)的基础上衍生,但B+树加大了每个节点的分支数量,大大减少了树的高度,使得读取key(索引)链路更短,减少磁盘读取次数,从而减少I/O时间。 设B+树为M叉树,则 - 数据存储在叶节点,非叶节点至多存储M-1个key; - 根节点的子节点数量2~M; - 除根外的非叶节点的子节点数量在M/2~M,由磁盘区块大小及存储的key的大小决定; - 所有叶节点深度相同,数据项为L/2~L,由磁盘区块大小及存储的数据项大小决定。

wenfenglingran的博客 443

B树、B-树、B+树、B*树 介绍、比较与小结

B树        即二叉搜索树:        1.所有非叶子结点至多拥有两个儿子(Left和Right);        2.所有结点存储一个关键字;        3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;        如: B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询关键字比结点关键字小,就

陈嘉怡的专栏 893

二叉树中的红黑树、B树,B+树个人小结

1. 红黑树 1.1 概念 具有以下几种性质的树被称为红黑树: 结点只有两种颜色,黑色或者红色; 根结点一定是黑色 叶子结点为黑色,其中叶子结点包括(NIL:表示无值的点) 每个红色色结点的 两个结点为黑色 从任一结点到其自身的叶子结点所有的简单路径包含相同数目的黑色结点 由性质5可以推出 如果一个结点存在黑色子结点,那么该结点肯定有两个子结点。 下图就是一个红黑树: 红黑树是一种平衡二叉查找树的变体,它的左右子树高差有可能大于 1,所以红黑树不是严格意义上的平衡二叉树(AVL),但对之进行平衡的代价

qq_43685242的博客 241

菜鸡笔记——B-+树小结

好久没更新了,最近期末考复习看到B树突然觉得全忘了,后来花了一个上午的时间查博客、问老师,总算稍微弄懂了一些。接下来稍微总结一下。 为什么要有B树? 学习任何一个东西我们都要知道为什么要有它,B树也一样,既然存储数据,我们为什么不用红黑树呢? 这个要从几个方面来说了: (1)计算机有一个局部性原理,就是说,当一个数据被用到时,其附近的数据也通常会马上被使用。 (2)所以当你用红黑树的时候,你一次只...

weixin_43301333的博客 419
上一篇: 伸展树
下一篇: B+树与B*树小结
Scandinavians
博客等级 码龄19年 36粉丝 121原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值