B树查找,磁盘查找数据

【B~树】 

B~树,又叫平衡多路查找树。一棵m阶的B~树 (m叉树)的特性如下:

1)  树中每个结点至多有m个孩子;

2)  除根结点和叶子结点外,其它每个结点至少有[m/2]个孩子;

3)  若根结点不是叶子结点,则至少有2个孩子;

4)  所有叶子结点都出现在同一层,叶子结点不包含任何关键字信息(可以看做是外部接点或查询失败的接点,实际上这些结点不存在,指向这些结点的指针都为null);

5)  每个非终端结点中包含有n个关键字信息: (n,A0,K1,A1,K2,A2,……,Kn,An)。其中,

     a)   Ki (i=1…n)为关键字,且关键字按顺序排序Ki < K(i-1)。

     b)   Ai为指向子树根的接点,且指针A(i-1)指向子树种所有结点的关键字均小于Ki,但都大于K(i-1)。

     c)   关键字的个数n必须满足:  [m/2]-1 <= n <= m-1

 现在我们模拟查找文件29的过程:

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

      (2) 此时内存中有两个文件名17,35和三个存储其他磁盘页面地址的数据。根据算法我们发现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,并定位了该文件内存的磁盘地址。

    原文作者:B树
    原文地址: https://blog.csdn.net/Yelbosh/article/details/7484061
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞