持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第6天,点击查看活动详情。
拓扑排序
由某个集合上的一个偏序得到该集合上的一个全序。
关键路径
AOE网:一个带权的有向无环图,通常AOE网可用来估计工程的完成时间。
顶点:表示事件
弧:表示活动
权:表示活动持续的时间
画出关键路径、题中有三条(13246/13256/1356)、必须做到三条同时减小。
查找
折半查找
计算机中折半遇到小数int类型直接省略小数。
查找成功是圆圈,不成功是区间方框。
分块查找
将查找表分为若干子块。块内的元素可以无序,但块之间是有序的。
抽取最大。
散列表
散列函数:一个把查找表中的关建字映射成该关键字对应的地址的函数,记为Hash(key) = Addr。
散列(Hash)表:根据关键字而直接进行访问的数据结构。
常用的散列函数:
1.直接定址法:H(key)=a * key + b
2.除留余数法:H(key)=key%p
处理冲突的方法:
1.开放定址法(顺序表)
取定某一增量序列后,对应的处理方法就是确定的。通常有以下四种取法。
①线性探测法
②平方探测法(二次探测法)
③再散列法
④伪随机序列法
2.拉链法(单链表)
线性探测法
比较次数为4是因为跟散列地址为5.6.7.8的比较、先比较再存储。
ASL成功是已经存储进去的数字的比较次数相加再除以数字和。
ASL失败是从0开始,若为空,则只用找一次,若不为空,一直往后找,直到找到空为止,然后才开始下一个,从0到散列函数的p-1,一共有p个,相加再除以p。
四要素:查找次数、关键字、散列地址、比较次数。
平方探测法
此处ASL失败是错误的,应按照处理冲突的办法来进行。也就是平方探测。
再散列法
伪随机法
拉链法
成功:第一行有4个,1*4,第二行,2*3,以此类推
失败:第一列找第三次没找到,第二列找第四次没找到,以此类推,找完所有的。
总结:
处理冲突时模表长,
B树
多路平衡查找树,B树中所有结点的孩子结点数的最大值称为B树的阶,常用m表示。
B树的删除
B树的特性
一棵m阶B树或为空树,或为满足如下特性的m叉树:
(1)树中每个节点至多有m棵子树(即至多有m-1个关键字)
(2)若根节点不是终端结点,则至少有两棵子树。
(3)除根节点外的所有非叶节点至少有【m/2】棵子树(即至少含有【m/2】-1个关键字)。
(4)所有的叶节点都出现在同一层次上,且不带信息。