龙儿经理嘴上经常说的B树

国内的数据结构教材一般是按照Knuth定义,即“阶”定义为一个节点的子节点数目的最大值。

对于一棵m阶B-tree,每个结点至多可以拥有m个子结点。各结点的关键字和可以拥有的子结点数都有限制

规定m阶B-tree中,

根结点至少有2个子结点,除非根结点为叶子节点,相应的,根结点中关键字的个数为1~m-1,比节点数目少一个

非根结点至少有[m/2]([],向上取整)个子结点,相应的,关键字个数为[m/2]-1~m-1。

 order阶数的意思

所有的叶子结点都位于同一层

在B-树中,每个结点关键字从小到大排列

下面,咱们来模拟下查找文件29的过程:

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

2.  此时内存中有两个文件名17、35和三个存储其他磁盘页面地址的数据(3个子节点)。根据算法我们发现: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,并定位了该文件内存的磁盘地址。分析上面的过程,发现需要3 3次磁盘IO操作和次磁盘IO操作和3次内存查找 次内存查找操作。关于内存中的文件名查找,由于是一个有序表结构,可以利用折半查找提高效率。至于IO操作是影响整个B树查找效率的决定因素。

——————————————————————

理解慢

时间: 2024-10-07 20:20:24

龙儿经理嘴上经常说的B树的相关文章

健康知识:嘴上起泡上火如何办

最近工作上的烦心事比较多,鸭梨山大,表现如下: 1,睡觉不足,夜里两三点钟想起工作的事情就难以入睡: 2,白天喝水也少,一天喝不到一杯开水,常以咖啡,饮料解决: 3,吃饭胃口差,饮食上总喜欢吃些辣的刺激性的重口味,否则就吃不进去: 4,还常应酬客户喝酒,吃的油腻,过饱. 这些表现的根因是心烦气躁,生活节奏差,心态失衡:而饮食生活的不注意,更加重了上火,表现为嘴上起泡上火,肛门肿胀,大便不通畅等. 我尝试了如下的一些方法来快速消除: 1,调节饮食,少油腻,少辛辣刺激: 多吃绿豆,绿豆芽,豆腐,冬瓜

12.从上往下遍历二元树

http://zhedahht.blog.163.com/blog/static/2541117420072199173643/ 题目:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印. 例如输入 8    /  \   6    10  /\     /\ 5  7   9  11 输出8   6   10   5   7   9   11. 分析:这曾是微软的一道面试题.这道题实质上是要求遍历一棵二元树,只不过不是我们熟悉的前序.中序或者后序遍历. 我们从树的根结

BZOJ5291/洛谷P4458/LOJ#2512 [Bjoi2018]链上二次求和 线段树

原文链接http://www.cnblogs.com/zhouzhendong/p/9031130.html 题目传送门 - LOJ#2512 题目传送门 - 洛谷P4458 题目传送门 - BZOJ5291 推荐LOJ和洛谷,题面质量好,而且不卡常数. BZOJ题面烂,而且要卡那么一点点常数. 题意 有一条长度为$n$的链$\forall 1≤i<n$,点$i$与点$i+1$之间有一条边的无向图),每个点有一个整数权值,第$i$个点的权值是$a_i$??.现在有$m$个操作,每个操作如下: 操

UVALive - 7831 :ACM Tax (主席树求树路径上中位数:LCA+主席树)

题意:给定一棵带权树,Q次询问,每次询问路径上的中位数. 思路:中位数分边数奇偶考虑,当当边数为num=奇时,结果就算路径第num/2+1大,用主席树做即可... (做了几道比较难的主席树,都wa了...只有来刷刷水题,准备晚上的CF了) #include<bits/stdc++.h> using namespace std; const int maxn=1000010; int Laxt[maxn],Next[maxn],To[maxn],cost[maxn],cnt; int fa[50

CCPC河南省赛B-树上逆序对| 离线处理|树状数组 + 线段树维护逆序对 + dfs序 + 离散化

B题地址:树上逆序对 有两个思路 方法一:线段树离线 + 树状数组或者线段树维护区间和 0:离散化,离线存储输入的operation操作序列. ①:先线段树在dfs序上离线处理好整一棵树:在dfs序上先查询"加入当前结点的逆序对权值和"并记录,再加入当前这个节点:dfs完毕后,就已经记录好每个结点的dfs序出入时间戳(转化成区间问题了)和每个 ②:使用树状数组或者新的线段树在dfs序上插入逆序对权值 为什么能这样呢?因为dfs序维护了每个结点遍历的顺序,每个结点的dfs序时间戳肯定比它

产品经理常用的高效工具有哪些?

一提到 产品经理 常用工具,我们很容易就区分开,谁是新人,谁是老手. 新人往往热衷于学技巧,喜欢讨论各种特效,追求视觉上的美观.今天,我就要来帮大家破除这种" 工具迷信 " . 因为,使用工具是熟能生巧的事:对1-2 岁产品经理来说,为什么用,比怎么用更重要. · 正文 · 一.产品经理使用工具的真相 如果你是一款产品的负责人,正在招一名产品新人.面试后,有2 个选择: ·  产品新人 A ,熟练使用各种软件,但毫无产品意识: · 产品新人B,产品意识和思维能力尚可,但对软件不熟悉.

程序员到项目经理:从内而外的提升

转自:http://www.cnblogs.com/watsonyin/archive/2012/09/10/2679528.html 目录 从程序员到项目经理(一):为什么要当项目经理 从程序员到项目经理(二):升职之辨 从程序员到项目经理(三):认识项目经理 从程序员到项目经理(四):外行可以领导内行吗 从程序员到项目经理(五):程序员加油站,不是人人都懂的学习要点 从程序员到项目经理(六):程序员加油站 — 懂电脑更要懂人脑 从程序员到项目经理(七):程序员加油站 — 完美主义也是一种错

浅谈 产品经理、研发、测试,三个冤家如何高效沟通

浅谈 产品经理.研发.测试,三个冤家的那点事(1) 算上实习时间,参加工作已经五年了,一直在从事软件开发和测试的工作,期间也兼职干过一部分产品经理的事情,对这三者之间的微妙关系,颇有感悟. 1. 先来解读一下这三个岗位的"痛点" 聚会的时候,经常碰到以下几种情况,事后想起来,经常会有逗乐的感脚. 做开发的GG们是这样的: 一聊到自己的项目,两眼开始冒光,同时开启了狂喷模式,blabla一堆高大上的专业术语,一方面骂测试人员不懂技术,提的bug根本就不是关键问题,高级的bug他们根本就发

产品经理三大忌:瞎猜、自嗨和傲慢

本文和大家分享的主要是产品经理的三大禁忌,期望能帮助各位产品小伙伴们解决你们遇到的类似问题,或者避免类似问题的发生. 昨天,有一个入行不久的产品小伙伴,咨询了这样我一个问题: 自己在思考问题和提炼需求的时候,总是会自诩站在用户的角度去看问题,最终通过多次思考.梳理,提出自认为有效的针对性解决.实现方案,或者灵机一动想出一些点子觉得可以讨好用户,就非常高兴的排期实现了. 结果上线一段时间后,使用率很低,甚至有用户觉得是产品经理在自嗨.这让我觉得很沮丧,但是又无法反驳--因为即便是大公司,在做出来用