ADS
把充的钱学会来
ckc混合班 cs+金融 想当卷王的菜鸡
展开
-
算法导论B树学习笔记
#定义就不重复说明了B树与B+树的不同是,B+树中非叶子节点的节点也会出现在叶子节点中B树要求至少t-1,至多2t-1B树一、插入1、关于高度的定理h⩽logtn+12h\leqslant log_t \frac{n+1}{2}h⩽logt2n+12、分裂操作:抽象出来就是插入到某个节点,满了之后从中间分裂(之间除以2就行,不用考虑奇偶性),然后将中间的节点提上去这个时候相当于上一个节点插入了节点具体实现,我想的是分裂的那个节点前一半指针和data不变,生成的新节点复制后一半的内容,原创 2021-03-15 17:49:13 · 99 阅读 · 0 评论 -
第三次课笔记
一、B+树定义二、B+树的插入1、先搜索到某一叶子节点里面2、检查是否有超过M3、如果超过了就分裂(平均分,保证每个分裂的节点都大于M/2)4、分裂了之后再检查上一个节点是否因为分裂又超生了,没有的话就把分裂的这个节点的中间的那个值放到上一个节点如果超生了还是放上去吧,然后这个节点再带着子节点分裂,再往上面检查这样三、B+树的删除反过来,主要看siblings课堂讨论题:把箱子根据初始容量编号成BST,插入物品的时候从上面开始搜索,搜索到的最小的能装下的箱子就装入。记录每个箱子的实时容量,原创 2021-03-15 17:07:21 · 78 阅读 · 0 评论 -
ADS第二节课红黑树笔记
一、红黑树是带有颜色属性的BST实际上用颜色而不是高度是为了节约空间,因为颜色只有一位,实际上这个数据结构也是相对AVL简单的可以理解为用非严格的平衡换取增删节点的时候旋转次数的下降它的性质有:1、节点红/黑2、根节点为黑色的,叶子节点带有两个空的黑色节点3、每个叶子节点都带有两个空的黑色节点4、每个红色节点的两个子节点都是黑色(或者说路径上不能有连续的红色节点5、从任一节点到它所能到达的叶子节点的所有简单路径都包含相同数目的黑色节点黑哨兵很重要,保证了树的平衡的问题二、红黑树的插入旋原创 2021-03-08 14:39:21 · 105 阅读 · 0 评论 -
amortized analysis
一、摊还分析简介amortized analysis:不涉及概率的问题(实际上是在最坏的输入/或者其他总之最坏的情况下分析,在单次执行程序中,自然也不会涉及到数据输入的概率问题),保证最坏情况下每个操作的平均性能主要有:accounting analysis:aggregate analysis:potential amalysis:二、聚合分析利用聚合分析的结果:对于n个操作的序列,最坏运行时间为T(n),每个操作的平均代价为T(n)/n在聚合分析中,我们的摊还代价为平均代价三、acc原创 2021-03-01 21:07:43 · 220 阅读 · 0 评论 -
算法导论第一部分笔记
一、伪代码规范总结1、缩进表示块的结构实际上这个我们可以联想python来理解2、while 后面跟上end比较好,for xxx to/downto xxx 后面则不需要3、大部分都类似于c的代码4、部分操作可以由英文来代替5、一般不使用全局变量,复合数据往往组织为对象来进行操作二、算法复杂度(跳过)三、分治策略问题解决的方法主要有:1、代入法:猜测一个界,再运用数学归纳法证明其正确性2、递归树法:将递归式转化为递归树来计算3、运用离散数学解递推式的方法...原创 2021-03-01 20:34:54 · 74 阅读 · 0 评论 -
ADS第一节课笔记
AVL一、想法来源:搜索树的高度可能为o(n)最直接的想法就是保证根节点的深度相差不超过1实际上如果考虑搜索效率的话,这样的限制强了一些。我们可以考虑偏局部的想法,左右子树的高度相差为1,这样包含了上面的情况,并且可能存在根节点深度为2的情况定义:balance factor:hl-hr,左子树高度减去右子树高度二、旋转双旋转/单旋转单旋转,用于左右子树差别不大的时候,旋转一次就得到结果复杂的情况使用双旋转,可以通过一直使用双旋转不断降低balance factor标记:RR rotatio原创 2021-03-01 15:52:30 · 592 阅读 · 0 评论