算法导论笔记:18B树】的更多相关文章

详细MIT算法导论笔记 (网络链接) 第一讲:课程简介及算法分析 (Sheridan) 第二讲:渐近符号.递归及解法  (Sheridan) 第三讲:分治法(1)(Sheridan) 第四讲:快排及随机化算法 (Sheridan) 第五讲:线性时间排序 (Sheridan) 第六讲:顺序统计.中值(Sheridan)…
树的介绍部分摘取自博文二叉查找树(一).二叉查找树(二).二叉查找树. 1. 树的介绍 1.1 树的定义 树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合. 把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的.它具有以下的特点: (1) 每个节点有零个或多个子节点: (2) 没有父节点的节点称为根节点: (3) 每一个非根节点有且只有一个父节点: (4) 除了根节点外,每个子节点可以分为多个不相交的子树. 1.2 树的基本术语 若一个结点有子树,…
磁盘作为辅存,它的容量要比内存大得多,但是速度也要慢许多,下面就是磁盘的的结构图: 磁盘驱动器由一个或多个盘片组成,它们以固定的速度绕着主轴旋转,数据存储于盘片的表面,磁盘驱动器通过磁臂末尾的磁头来读写盘片.礠臂可以将磁头向主轴移近或移远.当一个磁头处于静止的时候,它下面经过的磁盘表面称为磁道. 磁盘之所以比主存要慢,是因为它有机械运动的部分:盘片旋转和磁臂运动.为了摊还机械移动所花费的等待时间,磁盘会一次存取多个数据项.磁盘上的数据被组织成页面.每次磁盘读写的数据都是以页面为单位. 本章考虑运…
当关键字是有界范围内的整数时,能够规避Ω(lglgn)下界的限制,那么在类似的场景下,我们应弄清楚o(lgn)时间内是否可以完成优先队列的每个操作.在本章中,我们将看到:van Emde Boas树支持优先队列操作及一些其他操作,每个操作最后情况运行时间为O(lglgn).而这种数据结构限制关键字必须为0~n-1的整数且无重复. 下面以n为元素个数,u为全域大小. 20.1 基本方法 直接寻址 即位图bitmap方法. insert,delete和member:复杂度O(1) minimum,m…
18.1 B树的定义  18.2 B树的基本操作 与一棵二叉搜索树一样,可以在从树根到叶子这个单程向下过程中将一个新的关键字插入B树中.为了做到这一点,当沿着树向下查找新的关键字所属位置时,就分裂沿途遇到的每个满结点(包括叶节点本身).如分裂一个满的根,首先要让根成为一个新的空根结点的孩子.树的高度因此增加1,分裂是树长高的唯一途径. 18.3 从B树中删除关键字 我们设计的这个过程必须保证无论何时,结点x递归调用自身时,x中关键字个数至少为最小度数t.使得有时在递归下降至子结点之前,需要把一个…
课程链接:http://open.163.com/special/opencourse/algorithms.html 第一课:算法分析基础 1.介绍插入排序与归并排序,计算并比较最坏运行时间 2.算法分析重点与渐近分析方法 以下为个人笔记,根据字幕整理 第一课 算法分析 总结 解决问题的方法和方式 算法:关于计算机程序性能和资源利用的研究 算法:性能.速度 在程序设计方面,什么比性能更重要呢? 正确性,可维护,健壮性 模块化,安全,用户友好 为什么关注性能? 1.直接决定方法可行不可行 算法能…
      一棵B树T是具有如下性质的有根树(设根为root): 1.每个节点x有一下域: (a)num,当前存储在节点x的关键字个数,关键字以非降序存放,因此key[i]<=key[i+1]<=--key[n]: (b)isleaf,是一个bool值,如果x为叶子节点,则isleaf=true. (c)每个节点包括num+1个指向其子女的指针p[0],p[1],--p[num].如果x为叶子,则p=NULL (d)每个节点包括num个关键字key[0],key[1],--key[num-1]…
本文关于AVL树的介绍引自博文AVL树(二)之 C++的实现,与二叉查找树相同的部分则不作介绍直接引用:代码实现是在本文的基础上自己实现且继承自上一篇博文二叉查找树. 1.AVL树的介绍 AVL树是高度平衡的而二叉树.它的特点是:AVL树中任何节点的两个子树的高度最大差别为1. 上面的两张图片,左边的是AVL树,它的任何节点的两个子树的高度差别都<=1:而右边的不是AVL树,因为7的两颗子树的高度相差为2(以2为根节点的树的高度是3,而以8为根节点的树的高度是1). 2.节点的旋转 如果在AVL…
B树 1. 简介 在之前我们学习了红黑树,今天再学习一种树--B树.它与红黑树有许多类似的地方,比如都是平衡搜索树,但它们在功能和结构上却有较大的差别. 从功能上看,B树是为磁盘或其他存储设备设计的,能够有效的降低磁盘的I/O操作数,因此我们经常看到有许多数据库系统使用B树或B树的变种来储存数据结构:从结构上看,B树的结点可以有很多孩子,从数个到数千个,这通常依赖于所使用的磁盘的单元特性. 如下图,给出了一棵简单的B树. 从图中我们可以发现,如果一个内部结点包含n个关键字,那么结点就有n+1个孩…
一.高级数据结构 本章以后到第21章(并查集)隶属于高级数据结构的内容.前面还留了两章:贪心算法和摊还分析,打算后面再来补充.之前的章节讨论的支持动态数据集上的操作,如查找.插入.删除等都是基于简单的线性表.链表和树等结构,本章以后的部分在原来更高的层次上来讨论这些操作,更高的层次意味着更复杂的结构,但更低的时间复杂度(包括摊还时间). B树是为磁盘存储还专门设计的平衡查找树.因为磁盘操作的速度要远远慢于内存,所以度量B树的性能,不仅要考虑动态集合操作消耗了多少计算时间,还要考虑这些操作执行了多…