B+数的设计步骤

news2024/11/15 16:22:34

1.节点的结构(如下图)

 

        (1)键值对--key是标识;value是存储的具体数据

        (2)节点的子节点--存储的是具体的子节点

        (3)节点的后节点--标记后一个节点

        (4)节点的前节点--标记前一个节点

        (5)节点的父节点--标记父节点是哪个

2.存储的规则

2.1存储第一条数据,并标记根节点和头结点。

2.2单个节点

2.2.1.没有超过设定的阶数

当存储第二和三个数据时,首先判断是否是最后一个结点或者要插入的键值对的键的值是否小于下一个结点的的键的最小值。如果是则再判断有没有超过设定的阶数,没有则将将数据直接插入到当前结点。当前的结点是最后一个结点并且没有超过设定的阶数,因此直接将二三个数据直接插入到当前的结点当中 。             

2.2.2.超过阶数(分裂)

在存储第四个数时,首先判断是否是最后一个结点或者要插入的键值对的键的值是否小于下一个结点的的键的最小值。如果是再判断是否超过设定的阶数了,超过了则取出原来key-value 集合中间位置的下标mid并获得中间位置的键midKey。构造一个新的键值对midKeyAndValue存储(中间位置的键,空串),然后分别将中间位置的左边封装成集合对象leftKeyAndValue,并将左边的数存储到leftKeyAndValue中;中间位置的右边封装成集合对象rightKeyAndValue,再判断当前结点是否有叶子结点,如果有则将中间位置后的数据(不包含中间位置的数据)存储到rightKeyAndValue中;如果没有则将从中间位置开始右边的数据保存到rightKeyAndValue中。分别对左右两个集合对象进行排序处理。以mid为界限将当前结点分裂成两个结点分别是:前节点leftNode,后节点rightNode;前指针的节点的结构为:数据(leftKeyAndValue),子节点(null),前指针(当前节点的左节点),后指针(rightNode),父节点(当前结点的父节点);此时将头节点重置为前节点leftNode;新建一个子节点childNode并将前节点leftNode和后节点rightNode添加进去,然后构造一个父节点parentNode结构为:子节点(childNode),键值对(midKeyAndValue),前节点(null),后节点(null),父节点(null)。并将子节点与父节点进行关联。

2.3一夫二子

2.3.1.没有超过设定的阶数

 存储第五个数的时候,

(1)以左子节点为依据进行判断,数值要是小于右子节点的第一个值,将数据存储到左子节点,并进行排序。

                          (2) 数值要是大于右子节点的的第一个值,则将数据存储到右子节点当中。

       

        2.3.2超过设定的阶数

存储第六个数据的时候

(1)有百分之五十跟存储第五个数的过程一样。

(2)有百分之五十的可能性会超过阶数

        2.4一夫三子

                2.4.1 三个子节点的数,要么都满,要么部分满         

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

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

相关文章

9 MFC CFileDialog

// SystemWndDlg.cpp: 实现文件 //#include "pch.h" #include "framework.h" #include "SystemWnd.h" #include "SystemWndDlg.h" #include "afxdialogex.h"#ifdef _DEBUG #define new DEBUG_NEW #endif// CSystemWndDlg 对…

git提交忽略target文件

背景 项目如果没有设置.ignore文件,则我们的idea待提交区域有好多红色的新增的target文件、.iml文件等。 解决 本来未忽略前如下: 在.ignore文件中新增如下命令 #忽略所有.svn目录 .svn/ #忽略所有target目录 target/ #忽略所有.idea目录 .idea/ #…

C#,保持亮度的动态直方图均衡化(Brightness Preserving Dynamic Histogram Equalization:BPDHE)源代码

图像增强的主要目的是显示隐藏的图像细节,或者用新的动态范围增加图像对比度。直方图均衡(HE)是用于图像对比度增强的最流行的技术之一,因为HE在计算上快速且易于实现。HE通过基于输入灰度级的概率分布重新映射图像的灰度级来执行…

学生使用的台灯该怎么选择?学生台灯应该这样选

随着时代快速发展,目前我国近视人数达到了7亿,呈现低龄化趋势,儿童及青少年人数占了53.8%。而且现在的学生学业负担都很重,每个家长都不希望自己的孩子近视或加深近视了,都会想尽一切办法保护视力。而护眼台灯就成了家…

光伏储能电能管理系统解决方案蓄电池管理

概述 在我国新型电力系统中,新能源装机容量逐年提高,但是新能源比如光伏发电、风力发电是不稳定的能源,所以要维持电网稳定,促进新能源发电的消纳,储能将成为至关重要的一环,是分布式光伏、风电等新能源消…

怎么用ai作图?简单几步教会你ai绘画

当我和我的朋友们闲聊的时候,一个话题引起了我们的兴趣——更新社交媒体头像。其中有一个朋友提出,想要制作一个与真人无异、美观大方的头像,但是却不知道该如何下手。于是乎,我们开始讨论ai绘画头像软件。大家都纷纷表示听说过&a…

基于Java+SpringBoot+vue的实验室管理系统设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

cubemx hal stm32 atgm336h GPS 北斗 定位 模块 驱动代码

代码部分 atgm336h.c #include "atgm336h.h" #include "stdio.h" #include "string.h"char rxdatabufer; u16 point1 0;_SaveData Save_Data; LatitudeAndLongitude_s g_LatAndLongData {.E_W 0,.N_S 0,.latitude 0.0,.longitude 0.0 };…

Docker网络架构三剑客CNM,Libnetwork和Driver

Docker网络架构主要由三部分组成:CNM,Libnetwork和Driver。 1.CNM CNM(Container Network Model)是一种网络模型,用于定义容器的网络架构和实现容器之间的通信。 这其中也有三要素: 沙盒:Sand…

基于matlab使用无限阵列分析对大型阵列中的互耦进行建模(附源码)

一、前言 此示例使用无限数组分析对大型有限数组进行建模。晶胞上的无限阵列分析揭示了特定频率下的扫描阻抗行为。此信息与隔离元件图案和阻抗的知识一起使用,以计算扫描元件图案。然后,使用数组中的每个元素都具有相同扫描元素模式的假设对大型有限数组…

造纸工厂配电室环境监控系统的应用案例与硬件选型

摘要:智能配电室环境监控系统可实现自动巡检、自动预警等功能,减少人员到现场巡视次数,能及早发现设备的潜在风险,迅速检测故障,节约维护保养时长,为配电生产检修、运行、各业务的标准化、规范化管理提供有…

1:即使设计-ui:尺寸和单位

一: 1: 一倍尺寸 378*812 2:二倍尺寸 750*1624 3:三倍尺寸 1125*2436 二:PX和PT px:物理像素 pt:逻辑像素 pt只存在一倍图中 在一倍图,ptpx,二倍图 1px2pt 三:DP和SP

AI开源路在何方丨2023智源大会精彩回顾

导读 当下,AI开源已经成为了人类开源创新的主战场,是超大规模人类智力协同的最佳组织形式。得益于开源协作持续不断地推进,AI在这个时代飞速发展。可以说如果没有开源社区建设,就不会有今天人工智能的成就。 在2023智源大会AI开源…

【python】基于multiprocessing.Pool实现python并行化的坑和解决方案

坑1:apply_async调用的子函数不执行或执行不彻底的解决方案 解决:使用apply_async时传入error_callback检查报错 from multiprocessing import Pooldef processFolder(idx, folders, o_dir):train_mesh TrainMeshes(folders)output_path os.path.join…

python小游戏——骰子猜大小

❄️作者介绍:奇妙的大歪❄️ 🎀个人名言:但行前路,不负韶华!🎀 🐽个人简介:云计算网络运维专业人员🐽 前言 我们已经基本学完了,逻辑判断和循环的用法&#…

Maven历史版本的下载

Maven历史版本的下载 打开Maven官网https://maven.apache.org/ 点击Download 点击Maven 3 archives

持续优化 XView 性能,大促弹窗搭投实践 | 京东云技术团队

背景 618 大促来了,对于业务团队来说,最重要的事情莫过于各种大促营销。如会场、直播带货、频道内营销等等。而弹窗作为一个极其重要的强触达营销工具,通常用来渲染大促氛围、引流主会场、以及通过频道活动来提升频道复访等。因此&#xff0…

Apache JMeter配置步骤压力测试实例

一. 安装环境:................................................................................................................ 2 二.安装步骤:...................................................................................…

QGis出图

工程——新建打印布局。 水平垂直参考线的妙用,很好用。 【【QGIS出图教程】免费软件!地理科研论文制图,出研究区位图,比Arcgis出图好使】

快速入门SringCloud

认识微服务 微服务是一种经过良好架构设计的分布式架构方案,微服务的特征有: 单一职责:微服务拆分粒度小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复开发面向服务:微服务对外暴露…