mirror of
https://github.com/Alice-and-Bob/CS408.git
synced 2026-11-02 13:13:58 +08:00
更新数据结构第七章
This commit is contained in:
46
README.md
46
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] 第七章 查找
|
||||
+ [ ] 第八章 排序
|
||||
|
||||
## 计算机组成原理
|
||||
+ [ ] 第一章 计算机系统概述
|
||||
+ [ ] 第二章 数据的表示和运算
|
||||
+ [ ] 第三章 存储系统
|
||||
+ [ ] 第四章 指令系统
|
||||
+ [ ] 第五章 中央处理器
|
||||
+ [ ] 第六章 总线
|
||||
+ [ ] 第七章 输入输出系统
|
||||
## 操作系统
|
||||
## 计算机组成原理
|
||||
|
||||
|
||||
## 网络安全基础与应用
|
||||
|
||||
BIN
数据结构/第6章 图/aa.png
Normal file
BIN
数据结构/第6章 图/aa.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 384 KiB |
BIN
数据结构/第6章 图/aaa.png
Normal file
BIN
数据结构/第6章 图/aaa.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 802 KiB |
@@ -80,4 +80,22 @@
|
||||

|
||||
|
||||
# 关键路径
|
||||
- AOE网:在AOV网的基础上,添加了边权值,代表了完成活动的开销(需要的时间等)
|
||||
- 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. 活动的最迟开始时间和最早开始时间的差额
|
||||
|
||||
- 求关键路径算法
|
||||

|
||||
- 实例
|
||||

|
||||
在选择题中可以省略步骤,但是解答题必须写完全部步骤
|
||||
BIN
数据结构/第7章 查找/1.png
Normal file
BIN
数据结构/第7章 查找/1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 73 KiB |
BIN
数据结构/第7章 查找/2.png
Normal file
BIN
数据结构/第7章 查找/2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.1 KiB |
BIN
数据结构/第7章 查找/3.png
Normal file
BIN
数据结构/第7章 查找/3.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 7.8 KiB |
99
数据结构/第7章 查找/查找.md
Normal file
99
数据结构/第7章 查找/查找.md
Normal file
@@ -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$个关键字
|
||||
- p0所指向的子树中,所有关键字都小于k1;p1所指向的子树中,所有关键字都大于k1
|
||||
2. 高度
|
||||
- 对包含n个关键字,高度为h,阶数为m的B树:
|
||||
- 高度范围
|
||||

|
||||
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与装填因子有关,这是因为散列表越满,越有可能产生冲突
|
||||
BIN
数据结构/第7章 查找/第七章 查找.xmind
Normal file
BIN
数据结构/第7章 查找/第七章 查找.xmind
Normal file
Binary file not shown.
Reference in New Issue
Block a user