B树

本文详细介绍了B树的概念,包括磁盘读取原理、B树的定义、基本操作(查找、创建、插入和删除),并举例说明了插入和删除节点的过程。B树是一种多叉树,适用于大量数据存储,能有效降低磁盘查找次数,提高数据存取效率。
摘要由CSDN通过智能技术生成

  常见的动态查找树有:二叉查找树(BST)、平衡二叉查找树(AVL)、红黑树(RB-Tree)、B-tree/B+-tree。
  由于前面三种树都属于二叉树,因此树的高度为(log2N)。树查找的时间复杂度与树的高度有关,因此要提高查找效率必须要降低树的高度,所以我们可以想到多叉树。
  B树、B+树都是基于多叉树实现的。

磁盘读取

  (参考http://blog.csdn.net/v_july_v/article/details/6530142
  由于内存是有限制的,一般最多也只有几个G。当存储数据量过大时,内存不再满足需求,此时必须用到辅存,如磁盘等。
  虽然磁盘比主存便宜且容量大得多,但是它们的读写速度却很慢。一个典型的磁盘驱动器如下图所示:
  这里写图片描述
  磁盘是一个扁平的圆盘。盘面上有许多称为磁道的圆圈,数据就记录在这些磁道上。
  当磁盘驱动器执行读/写功能时。盘片装在一个主轴上,并绕主轴高速旋转,当磁道在读/写头(又叫磁头) 下通过时,就可以进行数据的读 / 写了,一个磁道对应一个柱面。

磁盘的读/写原理和效率

  磁盘块是磁盘中数据存储、检索的基本单位。同一个磁盘具有固定大小的磁盘块,一般为512字节或4k字节。
  磁盘上数据必须用一个三维地址唯一标示:柱面号、盘面号、块号(磁道上的盘块)
  读/写磁盘上某一指定数据需要下面3个步骤:
  (1) 首先移动臂根据柱面号使磁头移动到所需要的柱面上,这一过程被称为定位或查找
  (2) 如上图所示,所有磁头都定位到了10个盘面的10条磁道上。这时根据盘面号来确定指定盘面上的磁道
  (3) 盘面确定以后,盘片开始旋转,将指定块号的磁道段移动至磁头下
  经过上面三个步骤,指定数据的存储位置就被找到。这时就可以开始读/写操作了。
  
  磁盘读取数据是以盘块(block)为基本单位的。位于同一盘块中的所有数据都能被一次性全部读取出来。而磁盘IO代价主要花费在查找时间上。因此我们应该尽量将相关信息存放在同一盘块,同一磁道中。或者至少放在同一柱面或相邻柱面上,以求在读/写信息时尽量减少磁头来回移动的次数,避免过多的查找时间。
  
  读写数据时,花费最大的是磁盘存取的时间。因此为了提高效率,我们必须降低磁盘查找存取的次数。因此想到了多叉树,如B树、B+树、B*树。本文将主要介绍B树的原理和操作。

B树

  为了降低树的高度,B树的度一般都非常大。B树与红黑树的相似之处在于,每棵含n个节点的B树的高度为O(lgn),但是可能比红黑树的高度小得多。
  一棵简单的B树示意图如下:
  这里写图片描述
  内节点:非叶子节点
  如果B树的内节点x包含n[x]个关键字,则x节点就有n[x]+1个孩子节点。节点x中的n[x]个关键字将x所处理的关键字区间划分成n[x]+1个子区间。以根节点的左孩子节点为例,D、H两

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值