B- 树查找算法分析
来源:互联网 发布:真实的蒋介石知乎 编辑:程序博客网 时间:2024/06/05 00:39
B- 树查找算法分析
从查找算法中可以看出, 在B- 树中进行查找包含两种基本操作:
( 1) 在B- 树中查找结点;
( 2) 在结点中查找关键字。
由于B- 树通常存储在磁盘上, 则前一查找操作是在磁盘上进行的, 而后一查找操作是在内存中进行的, 即在磁盘上找到指针p 所指结点后, 先将结点中的信息读入内存, 然后再利用顺序查找或折半查找查询等于K 的关键字。显然, 在磁盘上进行一次查找比在内存中进行一次查找的时间消耗多得多.
因此, 在磁盘上进行查找的次数、即待查找关键字所在结点在B- 树上的层次树, 是决定B树查找效率的首要因素。
设B树包含N个关键字#因此有N+1个树叶都在第J+1 层。 第一层为根,至少一个结点,根至少有两个孩子,因此在第二层至少有两个结点。除根和树叶外,其它结点至少有[m/2]个孩子,因此第三层至少有2*[m/2]个结点,在第四层至少有2*[m/2]2 个结点…那么在第J+1层至少有2*[m/2]J-1个结点,而J+1层的结点为叶子结点,于是叶子结点的个数N+1有
N+1≧2*[m/2]J-1J≦log[m/2]((N+1)/2)+1
这意味着若N=1999998,m=199则J至多等于4,因为对B树的一次查找至多进行J次存取,所以,这个公式保证了高效率地查找B树。
再来分析一下对B树进行插入运算时,需要分裂的结点的个数的上限。 设L是内部结点的个数,除根外的所有内部结点都包括[m/2]J-1个关键字时)B树所包括的总关键字个数最少,因此有
N≧1+([m/2]-1)(L-1)
于是
L-1≦(N-1)/( [m/2]-1)
现在考虑最坏的情况,即从第三个结点开始,每个结点均是经过分裂而得到的,也就是说插入N个关键字的过程中进行了L-1次分裂,那么每插入一个关键字平均分裂的结点个数为(L-1)/N≦(N-1)/( [m/2]-1)*N≦1/( [m/2]-1).
- B- 树查找算法分析
- 经典查找算法 --- B-树
- 经典查找算法 --- B+树
- 经典查找算法 --- B*树
- 查找中的算法----HASH查找,二分查找,堆查找,B树查找,字典树,海量查找
- 数据结构与算法7:哈夫曼树,二叉查找树,平衡二叉查找树,B树,B+树
- 查找、检索 算法-总结5 多路查找树/B~树/B+树
- 查找之B树,B+树,B*树及分析MySQL的两种引擎
- 《数据结构与算法分析》--二叉查找树
- 二分查找算法分析
- 算法分析:二分查找
- 二分查找算法分析
- 折半查找算法分析
- 各种查找算法分析
- 应用于外存查找树的B-树分析
- 【算法和数据结构】平衡查找树之B树
- 【数据结构】算法9.13-9.14 B树-插入&查找
- 查找:B-树
- 创建Oracle数据库
- 第十四周实验报告2
- java word 导出(FreeMarker,HTML模板,包含图片)
- 非常全面的浏览器useragent判断代码
- Oracle自动化测试工具OATS
- B- 树查找算法分析
- NT式驱动程序的基本结构
- Python内置字符串操作处理方法详解
- WDM驱动的基本结构
- 七日掌握版面设计基础:二,调整形态
- 译稿:UserAgent的历史变迁
- SharePoint 2010 的数据存储更改
- 设备对象(DEVICE_OBJECT)
- sqlite3 命令行其实也不错