数据结构—B-(B)、B+的总结

原理:参考趣学数据结构

m阶B-树规则(有序的(左子树的元素值<根节点的元素值<右子树的元素值)、平衡的(每个结点的左右子树的高度差<=1)、多路的(每个结点多个关键码)下同):
1.根节点至少2个子树
2.除了根节点和叶子结点,其他结点的子树至少为m/2向上取整个子树
3.除了叶子结点,其他结点的关键码的个数=这个结点的子树-1
4.指向空指针的结点为失败结点
5.每个结点最多有m颗子树

查找时间复杂度比较:O(以m为底数n为真数的对数(logmn)),递归根据有序性查找
插入时间复杂度比较:O(以m为底数n为真数的对数(logmn)),不满足规则最中间结点元素上溢,只有树根上溢,树的高度才加1
删除结点时间复杂度比较:O(以m为底数n为真数的对数(logmn)),左借、右借、合并

应用:大量相关信息存储后的查找、插入、修改中。

m阶B+树规则(有序的、平衡的、多路的、叶子结点构成一个链表,包含所有结点元素):
1.根节点至少2个子树
2.除了根节点和叶子结点,其他结点的子树至少为m/2向上取整个子树
3.除了叶子结点,其他结点的关键码的个数=这个结点的子树
4.指向空指针的结点为失败结点
5.每个结点最多有m颗子树
6.倒数第一层包含了所有的结点信息,并且构成有序的多关键码结点链表

查找时间复杂度比较:O(以m为底数n为真数的对数(logmn)),递归根据有序性查找,还可以进行范围查找,先查其实值,然后通过最后一层的同层链表向后继续查找
插入时间复杂度比较:O(以m为底数n为真数的对数(logmn)),分裂,中间结点上溢,如果跟结点为根节点上溢,则树的高度加1
删除结点时间复杂度比较:O(以m为底数n为真数的对数(logmn)),左借、右借、合并

应用:文件索引系统

学习一篇野指针方面的博客:
https://blog.csdn.net/acoolgiser/article/details/100133305?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163008191516780255221683%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=163008191516780255221683&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-100133305.first_rank_v2_pc_rank_v29&utm_term=%E9%87%8E%E6%8C%87%E9%92%88&spm=1018.2226.3001.4187

如果存在什么问题,欢迎批评指正!谢谢!

数据结构---B-(B)、B+的总结相关推荐

  1. 数据结构(08)— 线性单链表基本操作

    1. 线性单链表数据结构 // 假定每个结点的类型用 SNode 表示 typedef struct SNodeTag {int data; // 所存储的数据元素SNodeTag *next; // ...

  2. 数据结构(06)— 线性循环链表实战

    1. 循环链表定义 单链的循环链表结点的存储结构和单链表的存储结构一样, 所不同的是: 最后一个结点的 next 域指向头结点, 而不是"空".这样, 由表尾很容易找到表头. 但若 ...

  3. 数据结构(05)— 线性单链表实战

    1. 设计思路 本项目的实质是完成对考生信息的建立.查找.插入.修改.删除等功能,可以首先定义项目的数据结构,然后将每个功能写成一个函数来完成对数据的操作,最后完成主函数以验证各个函数功能并得出运行结 ...

  4. 数据结构(04)— 线性顺序表实战

    1. 设计思路 本实战的实质是完成对学生成绩信息的建立.查找.插入.修改.删除等功能,可以首先定义项目的数据结构,然后将每个功能写成一个函数来完成对数据的操作,最后完成主函数以验证各个函数功能并得出运 ...

  5. 数据结构(03)— 数据处理基本操作(数据的查找、新增、删除、修改)

    我们先来看一个关于查找的例子.查找,就是从复杂的数据结构中,找到满足某个条件的元素.通常可从以下两个方面来对数据进行查找操作:​ 根据元素的位置或索引来查找: 根据元素的数值特征来查找. 针对上述两种 ...

  6. 数据结构(02)— 时间复杂度与空间复杂度转换

    1. 时间复杂度转化为空间复杂度 常用的降低时间复杂度的方法有递归.二分法.排序算法.动态规划等,降低空间复杂度的核心思路就是,能用低复杂度的数据结构能解决问题,就千万不要用高复杂度的数据结构. ​ ...

  7. OpenCV 笔记(09)— 常用的数据结构和函数(Vec、Point、Scalar、Size、Rect、cvtColor)

    1. Vec 对象类型 Vec 是一个主要用于数值向量的模板类.我们可以定义向量的类型和组件的数量: Vec<double, 19> myVector 我们还可以使用任何的预定义类型: t ...

  8. 数据结构与算法——线性结构——线性表及其表示

    -"一,线性结构 1.顺序储存结构直接表示 多项式. 1).使用数组来表示多项式.(用数组下标来表示指数,值来表示系数) 可以表示成: 2).使用结构数组来表示.(把系数和指数看成一个二元组 ...

  9. 队列:实用程序服务和数据结构

    队列:实用程序服务和数据结构 Queues: utility services and data structures 队列实用程序服务 Nucleus RTOS有四个API调用,它们提供与队列相关的 ...

  10. 管道:实用程序服务和数据结构

    管道:实用程序服务和数据结构 Pipes: utility services and data structures 管道公用设施 Nucleus RTOS有四个API调用,它们提供与管道相关的实用程 ...

最新文章

  1. java gettext_JAVA中getText()怎么从一个JTextArea中读出内容?
  2. php中转,使用 PHP Curl 做数据中转
  3. GDCM:gdcm::ImageChangePlanarConfiguration的测试程序
  4. 得到WebService应用程序的路径
  5. STL源码剖析 Stack栈 queue队列
  6. 三步拆解一个数据分析体系
  7. 第 10 章 容器监控 - 085 - 如何快速部署 Prometheus?
  8. php获取图片所有颜色代码,php 获取一张图片所有点的颜色值
  9. 【OpenCV】立体匹配算法SSD、NCC、ASW的基础实现
  10. 建立域信任关系后,查找位置中看不到另一个域的信息
  11. 拓端tecdat|matlab对MCMC贝叶斯方法用于加筋复合板的冲击载荷识别
  12. 百度收购YY:第三次直播大战开启
  13. kms激活win10
  14. 2020-11-03 oracle sql根据身份证号来判断性别
  15. Hack The Box——Blunder
  16. unity获取obs虚拟摄像头
  17. 微信小程序开发工具取消用户授权
  18. 书论94 梁同书《频罗庵论书》
  19. fastadmin 工具栏添加表格重置
  20. Java中String 字符串与List<String>互转

热门文章

  1. 用递归方式实现二叉树先序、中序、后序遍历
  2. Android插件化开发基础之Java反射机制研究
  3. Android之混淆代码总结
  4. 【前端就业课 第一阶段】HTML5 零基础到实战(十一)canvas 基础
  5. java mysbatis select_MyBatis SELECT基本查询实现方法详解
  6. 耶鲁大学计算机科学录取,2020年耶鲁大学排名TFE Times美国最佳计算机科学硕士专业排名第18...
  7. 世界上最美的40个小镇,你见过多少个?
  8. 最不像地球的45个地方,你都见过几个?
  9. 史上超强的学科碰撞,有生之年必看系列!
  10. 分享一个理工男必学的撩妹姿势