国内的数据结构教材一般是按照Knuth定义,即“阶”定义为一个节点的子节点数目的最大值。

对于一棵m阶B-tree,每个结点至多可以拥有m个子结点。各结点的关键字和可以拥有的子结点数都有限制

规定m阶B-tree中,

根结点至少有2个子结点,除非根结点为叶子节点,相应的,根结点中关键字的个数为1~m-1,比节点数目少一个

非根结点至少有[m/2]([],向上取整)个子结点,相应的,关键字个数为[m/2]-1~m-1。

 order阶数的意思

所有的叶子结点都位于同一层

在B-树中,每个结点关键字从小到大排列
 

下面,咱们来模拟下查找文件29的过程:

1.  根据根结点指针找到文件目录的根磁盘块1,将其中的信息导入内存。【磁盘IO操作1次】

2.  此时内存中有两个文件名17、35和三个存储其他磁盘页面地址的数据(3个子节点)。根据算法我们发现:17<29<35,因此我们找到指针p2。

3.  根据p2指针,我们定位到磁盘块3,并将其中的信息导入内存。【磁盘IO操作 2次】

4.  此时内存中有两个文件名26,30和三个存储其他磁盘页面地址的数据。根据算法我们发现:26<29<30(与关键字比较),因此我们找到指针p2。

5.  根据p2指针,我们定位到磁盘块8,并将其中的信息导入内存。【磁盘IO操作 3次】

6.  此时内存中有两个文件名28,29。根据算法我们查找到文件名29,并定位了该文件内存的磁盘地址。分析上面的过程,发现需要3 3次磁盘IO操作和次磁盘IO操作和3次内存查找 次内存查找操作。关于内存中的文件名查找,由于是一个有序表结构,可以利用折半查找提高效率。至于IO操作是影响整个B树查找效率的决定因素。

——————————————————————

理解慢

最新文章

  1. swfupload纠结bug总结
  2. sqldeveloper
  3. 使用Jenkins可持续集成maven项目
  4. Hive_DDL与DML
  5. jsp_包含指令
  6. 可怜的js居然没有块级作用域
  7. linux设备驱动归纳总结(八):3.设备管理的分层与面向对象思想【转】
  8. rcc
  9. org.springframework.orm.jpa.JpaTransactionManager
  10. WordPress页面函数功能代码调用大全
  11. JS原型,Prototype,原型
  12. SQL Server执行计划那些事儿(3)——书签查找
  13. KVO 其原理探究
  14. js基础提高(二)
  15. Java设计模式——策略模式
  16. 深入浅出Hadoop之mapreduce
  17. hibernate之一级缓存
  18. C#学习笔记-域用户认证(一)
  19. windows环境下永久修改pip镜像源的方法(转)
  20. [原][OSG]OSG例子程序简介

热门文章

  1. CentOS 7 Install Gitlab CE
  2. nyoj 1238(BFSor最短路)
  3. 5.4 使用 Razor 表达式
  4. 使用Windbg解析dump文件
  5. Rotate Array 旋转数组 JS 版本解法
  6. bzoj1089
  7. Oracle Rman 增量备份与差异备份
  8. (C/C++学习笔记) 十七. 面向对象程序设计
  9. 使用emma时遇到的一些问题
  10. 2019.1.10 L223