算法5-3:B树

我们知道硬盘的读取速度是很慢的,那么如何实现文件系统才能让计算机更加高效呢?这时候就要引入B树的概念了。B树是平衡二叉树的推广形式,它的每个节点可以有很多的子节点。子节点的数量取决于扇区的大小。因为硬盘读取一个扇区的开销是最节省时间的。

下图展示了B树的样子,每个节点可以有多个子节点。

平衡树的应用

红黑树有着广泛的应用

Java:java.util.TreeMap, java.util.TreeSet

C++ STL:map, multimap, multiset

Linux:linux/rbtree.h

B树在文件系统中有着广泛的应用

NTFS  HFS  Ext3  JFS  ReiserFS  ORACLE  DB2  INGRES  SQL  PostgreSQL

算法5-3:B树

时间: 2024-10-14 15:10:46

算法5-3:B树的相关文章

【啊哈!算法】算法9:开启树之旅

这是什么?是一个图?不对,确切的说这是一棵树.这哪里像树呢?不要着急我们来变换一下. 是不是很像一棵倒挂的树,也就是说它是根朝上,而叶子朝下的.不像?哈哈,看完下面这幅图你就会觉得像啦. 你可能会问:树和图有什么区别?这个称之为树的东西貌似和无向图差不多嘛.不要着急,继续往下看.树其实就是不包含回路的连通无向图.你可能还是无法理解这其中的差异,举个例子,如下.          上面这个例子中左边的是一棵树,而右边的是一个图.因为左边的没有回路,而右边的存在1->2->5->3->

【坐在马桶上看算法】算法9:开启“树”之旅

我们先来看一个例子. 这是什么?是一个图?不对,确切的说这是一棵树.这哪里像树呢?不要着急我们来变换一下. 是不是很像一棵倒挂的树,也就是说它是根朝上,而叶子朝下的.不像?哈哈,看完下面这幅图你就会觉得像啦. 你可能会问:树和图有什么区别?这个称之为树的东西貌似和无向图差不多嘛.不要着急,继续往下看.树其实就是不包含回路的连通无向图.你可能还是无法理解这其中的差异,举个例子,如下.          上面这个例子中左边的是一棵树,而右边的是一个图.因为左边的没有回路,而右边的存在1->2->5

算法5-6:Kd树

问题 给定一系列的点,和一个矩形.求矩形中包含的点的数量. 解答 这个问题可以通过建立矩阵来进行求解.首先将一个空间分割成矩阵,将点放置在对应的格子中,再计算矩形覆盖的格子,再判断格子中的点是否包含在矩形中 这种方法的问题是,可能这些点全都集中在一个格子中.这种情况下算法的效率比较低. 这种问题在地图的应用中非常常见. 因此需要引入2D树的概念,使得矩阵的分解会根据点的密度自动适应. 2D树 下图展示了2D树的样子. 2D树的构建 每次加入一个点时,将平面分成两半. 加入第二个点时,由于第二个点

Java数据结构和算法(一)树

Java数据结构和算法(一)树 前面讲到的链表.栈和队列都是一对一的线性结构,这节讲一对多的线性结构 - 树.「一对多」就是指一个元素只能有一个前驱,但可以有多个后继. 一.树 度(Degree) :节点拥有的子树数.树的度是树中各个节点度的最大值. 节点 :度为 0 的节点称为叶节点(Leaf)或终端节点.度不为 0 的节点称为分支节点.除根节点外,分支节点也被称为内部节点. 节点关系 :节点的子树的根称为该节点的孩子(Child).该结点称为孩子的双亲或父结点.同一个双亲的孩子之间互称为兄弟

Java数据结构和算法(二)树的基本操作

Java数据结构和算法(二)树的基本操作 一.树的遍历 二叉树遍历分为:前序遍历.中序遍历.后序遍历.即父结点的访问顺序 1.1 前序遍历 基本思想:先访问根结点,再先序遍历左子树,最后再先序遍历右子树即根-左-右.图中前序遍历结果是:1,2,4,5,7,8,3,6. // 递归实现前序遍历 public void preOrder() { System.out.printf("%s ", value); if (left != null) { left.preOrder1(); }

数据结构与算法系列研究五——树、二叉树、三叉树、平衡排序二叉树AVL

树.二叉树.三叉树.平衡排序二叉树AVL 一.树的定义 树是计算机算法最重要的非线性结构.树中每个数据元素至多有一个直接前驱,但可以有多个直接后继.树是一种以分支关系定义的层次结构.    a.树是n(≥0)结点组成的有限集合.{N.沃恩}     (树是n(n≥1)个结点组成的有限集合.{D.E.Knuth})      在任意一棵非空树中:        ⑴有且仅有一个没有前驱的结点----根(root).        ⑵当n>1时,其余结点有且仅有一个直接前驱.         ⑶所有结

算法数据结构(一)-B树

介绍 B树是为硬盘快速读取数据(降低IO操作次树)而设计的一种平衡的多路查找树. 目前大多数据库及文件索引,都是使用B树或变形来存储实现. 目录 1:为什么B树效率高 2:B树存储 3:B树缺点 一:为什么B树效率高 在大规模数据存储操作中,由于无法一次性加载到内存里.所以避免不了发生内外存交换.所以次数越少,效率表现也越高. 我们来看下面这张图: 这是个典型的b树结构,初始因子为1000.高度仅为3的b树,就可以存储1002001000的数据了. 假设我们要查询最后一个数据: 1: 从硬盘加载

java数据结构与算法之平衡二叉树(AVL树)的设计与实现

[版权申明]未经博主同意,不允许转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/53892797 出自[zejian的博客] 关联文章: java数据结构与算法之顺序表与链表设计与实现分析 java数据结构与算法之双链表设计与实现 java数据结构与算法之改良顺序表与双链表类似ArrayList和LinkedList(带Iterator迭代器与fast-fail机制) java数据结构与算法之栈(Stack)设

BIRCH算法---使用聚类特征树的多阶段算法

更多数据挖掘代码:https://github.com/linyiqun/DataMiningAlgorithm 介绍 BIRCH算法本身上属于一种聚类算法,不过他克服了一些K-Means算法的缺点,比如说这个k的确定,因为这个算法事先本身就没有设定有多少个聚类.他是通过CF-Tree,(ClusterFeature-Tree)聚类特征树实现的.BIRCH的一个重要考虑是最小化I/O,通过扫描数据库,建立一棵存放于内存的初始CF-树,可以看做多数据的多层压缩. 算法原理 CF聚类特征 说到算法原