知识学习大二上数据结构知识点查漏补缺
Posted cls1277
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识学习大二上数据结构知识点查漏补缺相关的知识,希望对你有一定的参考价值。
Update:
2021年12月30日14点28分:增加了错题集和修改原先部分内容
错题集
队列和栈虽然都是单向插入的数据结构,但是如果没有头结点,第一次插入的时候要认为是尾部插入,所以尾指针可能修改
二分的时候r=mid-1,l=mid+1
快速排序递归用栈,栈大小约为 O ( l o g n ) O(logn) O(logn)
关键路径部分定义:
关于栈求表达式
关键路径的问题:
求vl时,如果有多条边指向一个点,减完之后要去min。如果选max,会导致时间超过一条边连接的事件的vl,导致超过了那个事件的最迟时间,不能完成,故选min。
稀疏矩阵快速转置算法理解:
一些概念
ACN(average comparing number):平均比较次数, A C N = ∑ i = 0 n − 1 p i × c i ACN = \\sum_i=0^n-1p_i\\times c_i ACN=∑i=0n−1pi×ci,其中 p i p_i pi是搜索第i项的概率, c i c_i ci是找到时的比较次数
AMN(average moving number):平均移动次数,计算方法同上
存储密度:d = 数据元素的值所需的存储量 ÷ \\div ÷ 该数据元素所需的存储总量,因为可能有指针等非数据元素的值占用空间
稀疏因子: e = s m × n e=\\fracsm\\times n e=m×ns,s为分零元素个数,矩阵为 m × n m\\times n m×n的
EPL:树的外部路径长度,等于各叶节点到根节点的路径长度之和
IPL:树的内部路径长度,等于非叶节点到根节点的路径长度之和
PL:树的路径长度, P L = E P L + I P L PL = EPL + IPL PL=EPL+IPL
WPL:带权路径长度之和, W P L = ∑ i = 1 n w i × l i WPL=\\sum_i=1^nw_i\\times l_i WPL=∑i=1nwi×li,其中第i个外结点的权值为 w i w_i wi,它到根的路径长度为 l i l_i li,则该外结点到根的带权路径长度为 w i × l i w_i\\times l_i wi×li
扩充二叉树的带权路径长度定义为树的各外结点到根的WPL
ASL(average search length):平均搜索长度, A S L = ∑ i = 1 n p i × c i ASL=\\sum_i=1^n p_i\\times c_i ASL=∑i=1npi×ci, p i p_i pi为搜索表中第i个元素的概率, c i c_i ci为找到给定关键码的比较次数,分success和failure
结点的平衡因子bf:右子树的高度-左子树的高度
跳表:有一组分层的链,0层链有n个元素,0级链的 2 k , 2 × 2 k , 3 × 2 k , . . . 2^k,2\\times 2^k,3\\times 2^k,... 2k,2×2k,3×2k,...个结点链接成为 k − 1 k-1 k−1级链,取元素所在最高级。根据跳表的分级,进行折半搜索。
装载因子: α = n m \\alpha = \\fracnm α=mn,m为散列表的空间大小,n为填入散列表中的记录数。一般 α \\alpha α控制在0.6~0.9之间,临界值是0.5,大于临界值,性能会急剧下降
B树:1层1个结点,2层至少2个结点,3层至少 2 ⌈ m 2 ⌉ 2\\lceil \\fracm2 \\rceil 2⌈2m⌉个结点,4层至少 2 ⌈ m 2 ⌉ 2 2\\lceil \\fracm2 \\rceil^2 2⌈2m⌉2个结点……除根结点,每层至少 ⌈ m 2 ⌉ \\lceil \\fracm2 \\rceil ⌈2m⌉个结点,每个结点里最多m-1个值,最少 ⌈ m 2 ⌉ − 1 \\lceil \\fracm2\\rceil-1 ⌈2m⌉−1个。根节点至少2棵子树。2-3树m=3,2-3-4树m=4……。失败结点共n+1个。
优先队列:优先权数字越小,优先权越高
小问题
判断字符串是否为回文串:字符串每个字符进入栈和队列,同时从栈顶和队头取元素,并判断是否相等
三对角矩阵(主对角线和相邻的上下两条对角线上有值,其余为0): A [ i ] [ j ] A[i][j] A[i][j]在数组 B [ i ] B[i] B[i]存放于第 k k k个,则 i = ⌊ k + 1 3 ⌋ , j = k − 2 × i i= \\lfloor \\frack+13 \\rfloor , j=k-2\\times i i=⌊3k+1⌋,j=k−2×i
广义表的长度:分几大块(原子和子表都只算一个);广义表的深度:括号的最大嵌套次数
二叉树中序遍历的直观方法:投影法。按照合适的大小将每个点分开,垂直投影到水平直线上,得到的顺序即为中序遍历序
二叉树遍历序:按照dfs遍历整颗二叉树(即先根节点,再左节点,再右节点的顺序),第一次访问的顺序排列为先序,第二次为中序,第三次为后序。实现的时候需要记录每个结点访问次数,以及叶节点的处理方法。
红黑树的三个特性:根节点和外部结点都是黑色结点;从根结点到外部结点的路径上,不允许出现两个连续的红色结点;所有从根结点到外部结点的路径上都有相同数目的黑色结点。
按秩启发式合并并查集时间复杂度:find: O ( n l o g n ) O(nlogn) O(nlogn),树高限制在logn内
并查集合并路径压缩的非递归写法,以及优化后的并查集时间复杂度计算
哈希函数取模的选择: ≤ n \\leq n ≤n的(最大)素数,n为hash表长度
哈希冲突的解决方法:闭散列方法(存储到表的另一个位置),开散列方法(存在散列表主表之外),双hash,公共溢出区(冲突的都放入此表)
折半插入的时间复杂度: O ( n 2 ) O(n^2) O(n2),虽然减少了比较次数,但是移动次数仍不变,所以复杂度仍是平方级别
希尔排序:时间复杂度 O ( n 3 2 ) O(n^\\frac32) O(n23)
设置“监视哨”简化边界判断可以节省时间
树(森林)后根遍历等于对应二叉树的中序遍历
带图
如何判断单链表中有环?快慢指针法。如何找到环的入口?
KMPnext数组的计算算法
单链表的头指针:
卡特兰数计算式及其应用:
ASL与转载因子 α \\alpha α的关系:
B+树:
求关键路径的步骤:
稀疏矩阵的快速转置算法:
其他
递归算法转非递归算法
B树结点的删除:注意满足B树的性质。
线索化二叉树:如果没有左儿子,就指向前驱结点;如果没有右儿子,就指向后继结点。
哈希的数字分析法
以上是关于知识学习大二上数据结构知识点查漏补缺的主要内容,如果未能解决你的问题,请参考以下文章