btree算法一般用于实现数据库索引,索引文件存放在磁盘中, 从磁盘中读取数据是一个很耗时的操作,所以希望每个块(block)存放的记录数越多,那么访问磁盘的次数越少。
M阶数btree每个节点最多M个子节点,那么每个节点最多M-1个元素。
M只能为奇数,不然无法均匀分裂成两个子树和父节点
根节点第一次元素个数等于M后,拆出两个子节点,所以根节点的最小子树个数=2
其他中间节点的元素个数>=M/2
当节点元素个数等于M后需要分裂,元素个数<M/2后需要调整
参数:k
返回: {flag, Node, pos},flag是否查找到, 在哪个node, pos位置
描述:
从root开始,
如果 k_i = k 找到,
沿k_ < k < k_i 找到下一个节点递归查找,
参数: k
调用查找算法找到插入位置,如果插入后导致元素个数等于M,那么一个节点分裂成两个,中间元素并入父节点,如果父节点元素个数也等于M,那么递归调整,如果导致根节点分裂那么产生一个新的节点,也就是btree层级升高
调用搜索算法查找到元素位置,
Posted in: java基础
Comments are closed.