B树系列解析

embedded/2024/12/23 13:16:33/

在这里插入图片描述

  • 我最近开了几个专栏,诚信互三!
    ====> |||《算法专栏》::刷题教程来自网站《代码随想录》。|||
    ====> |||《C++专栏》::记录我学习C++的经历,看完你一定会有收获。|||
    ====> |||《Linux专栏》::记录我学习Linux的经历,看完你一定会有收获。|||
    ====> |||《C#专栏》::记录我复习C#的经历,深度理解查漏补缺,不定期更新。|||
    ====> |||《计算机网络专栏》::记录我学习计算机网络,看完你一定会有收获。|||

    ====> |||《mysql数据库》::记录我学习数据库,看完你一定会有收获。|||

B树系列解析

  • B树的优势
  • B树的结构
    • B树的增加
  • B+树的结构
    • B+树的插入
  • B*树了解

B树的优势

B树系列都擅长外查询,及查询磁盘中的数据,B树都是一棵多叉树,对于二叉搜索树来说,查询到一个结点的时间复杂度位logN,而一颗B树,查询都一个结点的时间复杂的位logM^N,着两者在内存级别时,差别不大,但是在磁盘级别能节约多次磁盘IO的时间,从而大大加快查询的速度。
因此,该数据结构常常用于需要大量进行磁盘IO的情况,如文件系统以及数据库的索引

B树的结构

B树满足以下几点要求,假设这是一颗M叉树。
1).B树的根结点至少有两个孩子。
2).B树的每个结点要有k个孩子和k-1个关键字,up(M/2)<=k<=M。
3).叶子结点没有孩子只有关键字。
4).B树关键字的左孩子的关键字比当前关键字都小,右孩子关键字比当前关键字大。
在这里插入图片描述
B树在设计结构的时候,我们往往会多设计一个关键字结点和孩子结点,这样好判断分裂的情况。

B树的增加

B树插入值时,是插入到叶子结点,此时有两者情况。
1).叶子结点没满,则直接插入。
2).叶子结点满了,则会进行分裂,将结点的关键字的二分之一拷贝到另一个结点,以及其所对应的孩子,同时提取第一个结点的中位数,加入到父节点,让两个结点连接到父节点的中位数下。
在这里插入图片描述
更具上述对于B树的插入描述,可知,B树是向右,向上成长的,所以B树天然平衡

B+树的结构

B+树是B树的新版本,也是mysql中索引使用的数据结构,它相较于B+树存在一些优势。
1).结构更简单,B+树有K个关键字和K个孩子,K[i]号关键字的孩子C[i]比K[i]大,C[i - 1]比K[i]小。
2).B+树的所有插入的值都在叶子结点,叶子结点通过指针相互连接起来。
3).综上,B+树的分支结点存的是索引,而不是值。
4).B+树遍历查询十分方便,所以查询某个范围的值效率高。
在这里插入图片描述
B+树也是向右向上生长,所以也天然平衡。

B+树的插入

B+树插入值时,需要先分裂一个结点,插入情况如下。
在这里插入图片描述
插入第一个结点,需要先分裂一个,随后每次插入都往叶子结点插入。
如果插入的结点小于叶子结点的最小值,则需要更新父节点的关键字,如果满了,则直接分裂一半关键字和孩子,不需要提取中位数,直接将第二个结点的最小值付给父节点的关键字。

B*树了解

B*树是对B+树的一次优化,以减少B+树的空间浪费
插入关键字导致结点满了后,将该结点给兄弟结点,如果兄弟结点也满了,则两个结点各自分出1/3给一个新结点。


http://www.ppmy.cn/embedded/124487.html

相关文章

【综合】六大编程语言大比拼

广告 加入FmCraft我的世界服务器吧&#xff01;tcp://mc.fmcraft.cn/&#xff0c;可以通过FmCraft Chat加入 加入水岸空间OJ吧&#xff01;主页 - 水岸空间OJ 加入FmCraft Chat吧&#xff01;注册&#xff1a;http://chattc.fmcraft.cn/entry/register 大厅&#xff1a;http:/…

shadcn-vue 快速开始

介绍 基于 Radix Vue 和 Tailwind CSS 构建的可重复使用的组件 一个由社区主导的非官方 Vue 版本的 shadcn/ui。虽然我们与 shadcn 没有正式的合作或联系&#xff0c;但在开始这个项目之前得到了作者本人的同意。创建这个项目的原因是 Vue 生态系统中缺乏类似的项目&#xff…

消息称苹果iPhone系列将完全放弃LCD屏幕

近日&#xff0c;据日经亚洲消息&#xff0c;苹果公司将于明年初推出搭载OLED显示屏的 iPhone SE 4&#xff0c;标志其整个iPhone系列已进入从 LCD 过渡到 OLED 技术的最后阶段&#xff0c;2025年及之后销售的所有iPhone机型均将搭载OLED屏幕。 由此&#xff0c;两家日本面板供…

Nginx的正向与反向代理

一、Nginx简介 1. 什么是Nginx Nginx&#xff08;发音为“engine-x”&#xff09;是一个高性能的HTTP和反向代理服务器&#xff0c;同时也是一个IMAP/POP3/SMTP代理服务器。Nginx是由俄罗斯的Igor Sysoev&#xff08;伊戈尔赛索耶夫&#xff09;为解决C10k问题&#xff08;即…

春潮涌动:构建“衣依”服装销售平台的Spring Boot之旅

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常适…

基于深度学习的多焦点图像融合系统【数据集+深度学习模型+源码+PyQt5界面】

深度学习多焦点聚焦图像融合 文章目录 研究背景代码下载链接一、效果演示1.1 界面设计1.2 图像融合演示11.3 图像融合演示21.4 图像融合演示3 二、技术原理2.1 引言2.2 融合策略2.3 深度特征的提取2.4 融合策略2.4.1 利用深度特征计算模糊度2.4.2 去噪与平滑2.4.3 图像融合 三、…

<<机器学习实战>>12-14节笔记:机器学习模型可信度、逻辑回归模型及多分类问题处理

12机器学习模型可信度 是否检验模型的指标好就一定说明模型可用&#xff1f;不是&#xff0c;必须得保证训练的样本和整天基本满足同一分布。 统计学习和机器学习区别&#xff1a;统计学习是根据样本模拟总体规律进而去预测&#xff08;当然要比对样本和总体的统计量是否一致&…

基于开源大型lmm模型生成标签对InternVL2-1B等轻量lmm模型进行微调

基于开源大型lmm模型生成标签对InternVL2-1B等轻量lmm模型进行微调,提升InternVL2-1B等轻量lmm模型的能力。本实验在window下,基于3060 12g显卡进行实验。基于qwen2-vl 7b模型生成标签(电脑显存大的话可以考虑qwen2-vl 72b模型),然后对InternVL2-1B进行Lora微调。以voc201…