Skip to content

Latest commit

 

History

History
224 lines (154 loc) · 9.89 KB

File metadata and controls

224 lines (154 loc) · 9.89 KB

数据结构笔记

2021 MOOC浙江大学数据结构

说实在的,我都研二了,要是数据结构还不过关,就别混了。主要是准备12月份再考一次 PAT (第一次84分🤬),因此把 MOOC 刷一次,搞个 50 块钱代金券。

课程幻灯片PPT/讲义PDF都放在./resources文件夹里了。

2021年12月11日考完了期末考试,98分,就第一道判断题错了。

总的说来有收获,又夯实了一遍基础;本来想考 12 月 18 日的 PAT 来着,现在觉得没必要考了。反而是课程本身让我受益匪浅。

期末考试 98 分,证书:./浙江大学数据结构证书.png

第一讲 基本概念

我以前的笔记记得就不错,见:

习题与作业:

代码:

第二讲 线性结构

我以前的笔记记得就不错,见:

补充一下:

代码:

习题与作业:

第三讲 树(上)

以前的笔记:

代码:

习题与作业:

第四讲 树(中)

现在的笔记:

代码:

习题与作业:

第五讲 树(下)

本节讲堆,可以参考我算法基础课的笔记:https://github.com/PiperLiu/ACMOI_Journey/blob/master/notes/acwings/算法基础课/ybase05.md#堆

补充笔记:

代码:

习题与作业:

第六讲 图(上)

讲了矩阵和链表表示图,然后还用 DFS 和 BFS 遍历图。不用记笔记了。习题和作业可以看看。还讲了连通分量。没啥可记的,有些定义去看看ppt吧:6.2 图的遍历.pdf

代码:

习题与作业:

期中考试

非常可惜,错了 3 道题, 2 道是因为马虎:

第七讲 图(中)

讲了经典例题:树的遍历完全二叉搜索树哈夫曼编码、单源最短路和多源最短路(Floyd算法)。

补充笔记:

代码:

习题与作业:

  • ./homeworks/ds.7.chap.md
  • 第二道编程题有一个测试点我说什么也过不了...是一个小遗憾,迄今为止所有题目我用自己的方法和习惯都能全过,唯独这道题

第八讲 图(下)

知识点有:最小生成树(Prim算法与Kruskal算法)以及拓扑排序。 y 总的算法基础课都有,我也不详细记录了。但是,在算法题中真的很少见。

代码:

习题与作业:

第九讲 排序(上)

各自排序,我这里简单总结下精华:冒泡和插排每次操作只能消除一个逆序对,因此时间复杂度是 $O(n^2)$ ,因此想提升效率,就希望每次操作可以消除多个逆序对。

补充笔记:

代码:

习题与作业:

第十讲 排序(下)

这节课讲快排、表排序、基数排序。以及排序方式的比较。

我有点好奇陈老师会在什么视角下比较:

  • 最差情况的时间复杂度肯定不是她考虑的,因为实际应用中并没有那么多最差情况
  • 比如插排适于已经差不多有排序的数据

补充笔记:

代码:

习题与作业:

第十一讲 散列查找

注意散列表中删除,一般用懒惰删除,即不是真正删除,而是标记一下那个位置,下次插入用到的话,可以直接覆盖。

补充笔记:

代码:

习题与作业:

第十二讲 习题选讲

讲了之前的三道例题以及 KMP 。注意这里 KMP next 字符串下标从 0 开始,与一般的做法不同(下标从 1 开始)。

代码:

  • [KMP 代码](./codes/12.4 KMP 代码.c)

习题与作业:

期末考试

./homeworks/ds.exam.2.md