diff --git a/README.md b/README.md index 033d967..adeda99 100644 --- a/README.md +++ b/README.md @@ -5,12 +5,17 @@ + **采用XMind:ZEN 2020制作,请使用等于或高于此版本的XMind打开。** -+ 能填多少坑取决于作者决定考哪个学校;如果决定的学校不是考408,那我只会更新那个学校的科目的总结(┓( ´∀` )┏)咕咕咕 - + 如果对你有帮助有启发,欢迎**点个star**资瓷一下作者;同时欢迎有**对内容更好想法/懂得xmind排版**的朋友提交issue帮助这个项目更好 + ++ ~~能填多少坑取决于作者决定考哪个学校;如果决定的学校不是考408,那我只会更新那个学校的科目的总结(┓( ´∀` )┏)咕咕咕~~ + + 最终决定考863 + + TODO:在21研考结束后,把所有的经验资料整理放到这个项目下 + ## NOTE: -+ 不适合在XMind里表达的内容,全部写在了同文件夹里的`*.md`文件或是`*.cpp`文件;一个文件夹里应该关注的仅有`*.xmind, *.md, *.cpp`文件,其余可以不用管 ++ 不适合在XMind里表达的内容,全部写在了同文件夹里的`*.md`文件或是`*.cpp`文件;一个文件夹里应该关注的仅有`*.xmind, *.md, *.cpp`文件,其余可以不用管 + ++ 在Markdown文件中使用了latex代码,请确保你的Markdown编辑器支持latex扩展以提高阅读体验 > 或许你也可以参考[这个项目](https://github.com/SSHeRun/CS-Xmind-Note) @@ -19,24 +24,31 @@ --- ## 计算机网络 -+ [x] [第一章 概论](https://github.com/Alice-and-Bob/CS408/blob/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/%E7%AC%AC%E4%B8%80%E7%AB%A0%20%E7%BB%AA%E8%AE%BA/%E7%AC%AC%E4%B8%80%E7%AB%A0%20%E6%A6%82%E8%BF%B0.xmind) -+ [x] [第二章 物理层](https://github.com/Alice-and-Bob/CS408/blob/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/%E7%AC%AC%E4%BA%8C%E7%AB%A0%20%E7%89%A9%E7%90%86%E5%B1%82/%E7%AC%AC%E4%BA%8C%E7%AB%A0%20%E7%89%A9%E7%90%86%E5%B1%82.xmind) -+ [x] [第三章 数据链路层](https://github.com/Alice-and-Bob/CS408/blob/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/%E7%AC%AC%E4%B8%89%E7%AB%A0%20%E6%95%B0%E6%8D%AE%E9%93%BE%E8%B7%AF%E5%B1%82/%E7%AC%AC%E4%B8%89%E7%AB%A0%20%E6%95%B0%E6%8D%AE%E9%93%BE%E8%B7%AF%E5%B1%82.xmind) -+ [x] [第四章 网络层](https://github.com/Alice-and-Bob/CS408/blob/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/%E7%AC%AC%E5%9B%9B%E7%AB%A0%20%E7%BD%91%E7%BB%9C%E5%B1%82/%E7%AC%AC%E5%9B%9B%E7%AB%A0%20%E7%BD%91%E7%BB%9C%E5%B1%82.xmind) -+ [x] [第五章 运输层](https://github.com/Alice-and-Bob/CS408/blob/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/%E7%AC%AC%E4%BA%94%E7%AB%A0%20%E8%BF%90%E8%BE%93%E5%B1%82/%E7%AC%AC%E4%BA%94%E7%AB%A0%20%E8%BF%90%E8%BE%93%E5%B1%82.xmind) -+ [x] [第六章 应用层](https://github.com/Alice-and-Bob/CS408/blob/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/%E7%AC%AC%E5%85%AD%E7%AB%A0%20%E5%BA%94%E7%94%A8%E5%B1%82/%E7%AC%AC%E5%85%AD%E7%AB%A0%20%E5%BA%94%E7%94%A8%E5%B1%82.xmind) ++ [x] [第一章 概论](https://github.com/Alice-and-Bob/CS408/blob/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/%E7%AC%AC1%E7%AB%A0%20%E7%BB%AA%E8%AE%BA/%E7%AC%AC%E4%B8%80%E7%AB%A0%20%E6%A6%82%E8%BF%B0.xmind) ++ [x] [第二章 物理层](https://github.com/Alice-and-Bob/CS408/blob/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/%E7%AC%AC2%E7%AB%A0%20%E7%89%A9%E7%90%86%E5%B1%82/%E7%AC%AC%E4%BA%8C%E7%AB%A0%20%E7%89%A9%E7%90%86%E5%B1%82.xmind) ++ [x] [第三章 数据链路层](https://github.com/Alice-and-Bob/CS408/blob/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/%E7%AC%AC3%E7%AB%A0%20%E6%95%B0%E6%8D%AE%E9%93%BE%E8%B7%AF%E5%B1%82/%E7%AC%AC%E4%B8%89%E7%AB%A0%20%E6%95%B0%E6%8D%AE%E9%93%BE%E8%B7%AF%E5%B1%82.xmind) ++ [x] [第四章 网络层](https://github.com/Alice-and-Bob/CS408/blob/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/%E7%AC%AC4%E7%AB%A0%20%E7%BD%91%E7%BB%9C%E5%B1%82/%E7%AC%AC%E5%9B%9B%E7%AB%A0%20%E7%BD%91%E7%BB%9C%E5%B1%82.xmind) ++ [x] [第五章 运输层](https://github.com/Alice-and-Bob/CS408/blob/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/%E7%AC%AC5%E7%AB%A0%20%E8%BF%90%E8%BE%93%E5%B1%82/%E7%AC%AC%E4%BA%94%E7%AB%A0%20%E8%BF%90%E8%BE%93%E5%B1%82.xmind) ++ [x] [第六章 应用层](https://github.com/Alice-and-Bob/CS408/blob/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/%E7%AC%AC6%E7%AB%A0%20%E5%BA%94%E7%94%A8%E5%B1%82/%E7%AC%AC%E5%85%AD%E7%AB%A0%20%E5%BA%94%E7%94%A8%E5%B1%82.xmind) ## 数据结构 -+ [x] [第一章 绪论](https://github.com/Alice-and-Bob/CS408/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E7%AC%AC%E4%B8%80%E7%AB%A0%20%E7%BB%AA%E8%AE%BA/%E7%AC%AC%E4%B8%80%E7%AB%A0%20%E7%BB%AA%E8%AE%BA.xmind) -+ [x] [第二章 线性表](https://github.com/Alice-and-Bob/CS408/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E7%AC%AC%E4%BA%8C%E7%AB%A0%20%E7%BA%BF%E6%80%A7%E8%A1%A8/%E7%AC%AC%E4%BA%8C%E7%AB%A0%20%E7%BA%BF%E6%80%A7%E8%A1%A8.xmind) -+ [x] [第三章 栈和队列](https://github.com/Alice-and-Bob/CS408/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E7%AC%AC%E4%B8%89%E7%AB%A0%20%E6%A0%88%E5%92%8C%E9%98%9F%E5%88%97/%E7%AC%AC%E4%B8%89%E7%AB%A0%20%E6%A0%88%E4%B8%8E%E9%98%9F%E5%88%97.xmind) -+ [x] [第四章 串](https://github.com/Alice-and-Bob/CS408/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E7%AC%AC%E5%9B%9B%E7%AB%A0%20%E4%B8%B2/%E7%AC%AC%E5%9B%9B%E7%AB%A0%20%E4%B8%B2.xmind) -+ [x] [第五章 树与二叉树](https://github.com/Alice-and-Bob/CS408/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E7%AC%AC%E4%BA%94%E7%AB%A0%20%E6%A0%91%E4%B8%8E%E4%BA%8C%E5%8F%89%E6%A0%91/%E7%AC%AC%E4%BA%94%E7%AB%A0%20%E6%A0%91%E4%B8%8E%E4%BA%8C%E5%8F%89%E6%A0%91.xmind) -+ [x] 第六章 图 -+ [ ] 第七章 查找 ++ [x] [第一章 绪论](https://github.com/Alice-and-Bob/CS408/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E7%AC%AC1%E7%AB%A0%20%E7%BB%AA%E8%AE%BA/%E7%AC%AC%E4%B8%80%E7%AB%A0%20%E7%BB%AA%E8%AE%BA.xmind) ++ [x] [第二章 线性表](https://github.com/Alice-and-Bob/CS408/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E7%AC%AC2%E7%AB%A0%20%E7%BA%BF%E6%80%A7%E8%A1%A8/%E7%AC%AC%E4%BA%8C%E7%AB%A0%20%E7%BA%BF%E6%80%A7%E8%A1%A8.xmind) ++ [x] [第三章 栈和队列](https://github.com/Alice-and-Bob/CS408/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E7%AC%AC3%E7%AB%A0%20%E6%A0%88%E5%92%8C%E9%98%9F%E5%88%97/%E7%AC%AC%E4%B8%89%E7%AB%A0%20%E6%A0%88%E4%B8%8E%E9%98%9F%E5%88%97.xmind) ++ [x] [第四章 串](https://github.com/Alice-and-Bob/CS408/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E7%AC%AC4%E7%AB%A0%20%E4%B8%B2/%E7%AC%AC%E5%9B%9B%E7%AB%A0%20%E4%B8%B2.xmind) ++ [x] [第五章 树与二叉树](https://github.com/Alice-and-Bob/CS408/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E7%AC%AC5%E7%AB%A0%20%E6%A0%91%E4%B8%8E%E4%BA%8C%E5%8F%89%E6%A0%91/%E7%AC%AC%E4%BA%94%E7%AB%A0%20%E6%A0%91%E4%B8%8E%E4%BA%8C%E5%8F%89%E6%A0%91.xmind) ++ [x] [第六章 图](https://github.com/Alice-and-Bob/CS408/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E7%AC%AC6%E7%AB%A0%20%E5%9B%BE/%E7%AC%AC%E5%85%AD%E7%AB%A0%20%E5%9B%BE.xmind) ++ [x] 第七章 查找 + [ ] 第八章 排序 +## 计算机组成原理 ++ [ ] 第一章 计算机系统概述 ++ [ ] 第二章 数据的表示和运算 ++ [ ] 第三章 存储系统 ++ [ ] 第四章 指令系统 ++ [ ] 第五章 中央处理器 ++ [ ] 第六章 总线 ++ [ ] 第七章 输入输出系统 ## 操作系统 -## 计算机组成原理 ## 网络安全基础与应用 diff --git a/数据结构/第6章 图/aa.png b/数据结构/第6章 图/aa.png new file mode 100644 index 0000000..25fc5af Binary files /dev/null and b/数据结构/第6章 图/aa.png differ diff --git a/数据结构/第6章 图/aaa.png b/数据结构/第6章 图/aaa.png new file mode 100644 index 0000000..04debc6 Binary files /dev/null and b/数据结构/第6章 图/aaa.png differ diff --git a/数据结构/第6章 图/图的应用.md b/数据结构/第6章 图/图的应用.md index 0a1e33f..e086948 100644 --- a/数据结构/第6章 图/图的应用.md +++ b/数据结构/第6章 图/图的应用.md @@ -80,4 +80,22 @@ ![](a.png) # 关键路径 -- AOE网:在AOV网的基础上,添加了边权值,代表了完成活动的开销(需要的时间等) \ No newline at end of file +- AOE网:在AOV网的基础上,添加了边权值,代表了完成活动的开销(需要的时间等) +- 关键路径:从源点到汇点的所有路径中,具有最大路径长度的路径称为关键路径,关键路径上的活动称为关键活动 + +1. 事件$v_k$发生的最早发生时间ve(k): + 指从源点到任意顶点k的最长路径长度,决定了从k开始的活动能够开工的最早时间 + +2. 时间$v_k$的最迟发生时间vl(k): + 指不推迟整个工程完成的前提下,即保证其后继事件j在它的最迟发生时间vl(j)之前能够发生时,该事件最迟必须发生的时间。 +3. 活动$a_i$最早开始时间e(i) + 弧起点所指代的事件的最早发生时间 +4. 活动$a_i$最迟开始时间l(i) + 弧终点所指代的事件的最迟发生时间与该活动所需时间之差 +5. 活动的最迟开始时间和最早开始时间的差额 + +- 求关键路径算法 + ![](aa.png) +- 实例 + ![](aaa.png) + 在选择题中可以省略步骤,但是解答题必须写完全部步骤 \ No newline at end of file diff --git a/数据结构/第7章 查找/1.png b/数据结构/第7章 查找/1.png new file mode 100644 index 0000000..9a95837 Binary files /dev/null and b/数据结构/第7章 查找/1.png differ diff --git a/数据结构/第7章 查找/2.png b/数据结构/第7章 查找/2.png new file mode 100644 index 0000000..5ca767c Binary files /dev/null and b/数据结构/第7章 查找/2.png differ diff --git a/数据结构/第7章 查找/3.png b/数据结构/第7章 查找/3.png new file mode 100644 index 0000000..16369ad Binary files /dev/null and b/数据结构/第7章 查找/3.png differ diff --git a/数据结构/第7章 查找/查找.md b/数据结构/第7章 查找/查找.md new file mode 100644 index 0000000..68e8884 --- /dev/null +++ b/数据结构/第7章 查找/查找.md @@ -0,0 +1,99 @@ +# 顺序查找和折半查找 +## 顺序查找 +1. 一般线性表顺序查找 + $$ASL_{成功}=\sum_{i=1}^{n}P_i(n-i+1)=\frac{n+1}{2}$$ + $$ASL_{失败}=n+1$$ +2. 有序表顺序查找 + $$ASL_{成功}=\sum_{i=1}^{n}P_i(n-i+1)=\frac{n+1}{2}$$ + $$ASL_{失败}=\frac{1+2+\cdots+n+n}{n+1}=\frac{n}{2}+\frac{n}{n+1}$$ + > 有序表在查找失败时的性能优于一般线性表顺序查找 +## 折半查找 +```cpp +int Binary_Search(SeqList L, ElemType key){ + int low=0, high=L.TableLen-1, mid; + while(low<=high){ + mid=(low+high)/2; + if(L.elem[mid]==key){ + return mid; + } + else if(L.elem[mid]>key){ + high=mid-1; + } + else{ + low=mid+1; + } + } + return -1; +} +``` +$$ASL_{成功}=\frac{n+1}{n}log_2(n+1)-1\approx log_2(n+1)-1$$ +> 仅适用于有随机存储性质的、关键字按序排列的线性表 + +## 分块查找 +将查找表分为若干子块,块内元素可以无序,但块间有序———第一个块的最大关键字小于第二个块的最小关键字……;再建立一个索引表,其中含有各块的最大关键字和各块的第一个元素地址,索引表按关键字有序排列 +$$ASL=\frac{s^2+2s+n}{2s} \text{ 其中,查找表长度为n,均分为b块,每块有s个记录}$$ + +# B树和B+树 +## B树 +1. 概念 + - B树是一棵m叉树 + - 为了保证查找效率,尽量减少树高,规定除根结点之外的非叶结点最少有$\left \lceil m/2 \right \rceil$个子树,即每个结点最少含有$\left \lceil m/2 \right \rceil-1$个关键字 + - ![](1.png)p0所指向的子树中,所有关键字都小于k1;p1所指向的子树中,所有关键字都大于k1 +2. 高度 + - 对包含n个关键字,高度为h,阶数为m的B树: + - 高度范围 + ![](3.png) +3. 插入 + 对B树进行插入操作 + 1. 定位:利用查找算法,假设查找要插入的key,则会查找到一个失败结点;继而可以定位到上面的终端结点中要插入的位置。 + 2. 插入:有两种情况 + - 插入后的终端结点的结点个数符合要求,直接插入 + - 插入后的结点个数多于m-1,则要分裂该节点;以$\left \lceil m/2 \right \rceil$为中,并把该元素提高到父节点位置,左右半边成为新的子树 +4. 删除 + 删除节点涉及到合并结点 + - 删除一个非终端结点中的元素:用该元素的前驱/后继覆盖该元素,接着在终端结点删除前驱/后继元素 + - 删除一个终端结点中的元素: + - 若删除后结点元素个数仍大于$\left \lceil m/2 \right \rceil$,则直接删除 + - 若删除后结点元素个数不符合最小要求,则向其左右兄弟借 + - 若够借:用前驱、前驱的前驱来代替,或是后继、后继的后继来代替 + - 不够借:合并左右兄弟和父节点,重新排列组合 +## B+树 +1. 概念: + - 根结点至少有两个子树,其他节点最少有$\left \lceil m/2 \right \rceil$个子树 + - 节点的子树个数等于关键字的个数 + - 只有叶结点有关键字及对应记录的地址,非叶结点只有其子树中的最大关键字和对应的子树地址 +2. 与B树的差异 + - B树m个关键字对应了m+1个子树;B+树m个关键字对应了m个子树 + - B+树节点关键字个数范围 $\left \lceil m/2 \right \rceil \leq n \leq m$ ;B树范围$\left \lceil m/2 \right \rceil -1 \leq m-1$ + - B树节点包含了关键字和关键字指向的记录的地址;B+树只在叶结点包含了记录的地址,非叶结点只有索引的作用 + +# 散列查找 +## 散列函数 +1. 直接定址法 + - H(key)=key / H(key)=a*key+b +2. 除留余数法 + - H(key)=key%p + - p是一个不大于且最接近散列表长的质数 +3. 数字分析法 +4. 平方取中法 + +## 处理地址冲突 +### 开放定址法 +$$ H_i=(H(key)+d_i)%m $$ +$H_i$表示第i次冲突后的新地址,$d_i$表示增量序列 +- 确定增量序列 + 1. 线性探测法 + - $d_i=0,1\cdots$ + 2. 平方探测法 + - $d_i=0^2, 1^2, -1^2, \cdots$ + 3. 再散列法 + - $H_i=(H(key)+i\times Hash_2{key})\%m$ + 4. 伪随机序列法 + - 采用伪随机序列作为增量序列 + +> 开放定址情况下,不能随意删除元素,因为这会截断其他具有相同散列地址的元素的查找地址。只能逻辑删除 + ### 拉链法 + 把同义词存在同一个链表中,由其散列地址唯一标识 + + ## 装填因子 + $\alpha=\frac{表中记录数n}{散列表长度m}$,装填因子表示了散列表“满”的程度;ASL与装填因子有关,这是因为散列表越满,越有可能产生冲突 \ No newline at end of file diff --git a/数据结构/第7章 查找/第七章 查找.xmind b/数据结构/第7章 查找/第七章 查找.xmind new file mode 100644 index 0000000..3514d24 Binary files /dev/null and b/数据结构/第7章 查找/第七章 查找.xmind differ