作者: 林少维
链接: https://www.zhihu.com/question/19830721/answer/23418658
学理论+可视化+编程实践
- 数据存储的目的是便于数据访问。这个关系就是数据结构
- 算法是计算机解题的模型:
- 输入
- 输出
- 顺序执行
- 跳转
- 循环
- 分支
- 有限步骤
- 大脑组织数据的方式 有线,树,图三种逻辑结构,
计算机存储采用顺序,链式和两者混合的方式,
前者是概念性,后者是物理实现
线形结构
- 算法是迭代算法,
- 注意规模最小的情况下不出错,则算法一般不出错
树形结构
算法是递归算法,将简单情形组合出复杂情形
简单情形不出错,则算法一般不会出错。
图形结构
DFS:将图按树形结构来处理,运用递归算法
BFS:将图按线形结构来处理,运用迭代算法
必须会下面几个算法
(线形两个)
将两个有序表合并为一个表,
这个算法的变种很多,可以是链表,顺序表。
涉及集合运算,归并排序,字符串处理。将一个顺序表的元素重新划分,左边的较小,右边较大
涉及快速排序,求字符串的逆串。
(树形若干个)注意:有些可以实现,有些实现不了,拿来思考
前序线索化
递归实现,栈模拟递归,非栈式迭代实现中序线索化
递归实现,栈模拟递归,非栈式迭代实现后序线索化
递归实现,栈模拟递归,非栈式迭代实现
(图形)注意:会画表格,写出算法的逐个步骤即可
- MST: prim,kruskal
- short path: Dijkstra, Floyd
- AOV: 拓扑排序的DFS, BFS实现
- AOE:关键路径