python 数据结构与算法知识图
1.算法思想:递归、分治(归并排序、二分查找、快速排序)、贪心(贪心策略排序+当前最优)、动态规划(最优子结构+递推式)、回溯(解空间:排列树+子集树、深度搜索+剪枝)、分支限界(解空间:排列树+子集树、广度搜索+剪枝))
2.排序算法:(low:冒泡、插入、选择;mid:快排、归并、堆排(完全二叉树,优先队列与二叉堆(大根堆或者小根堆))),其他:桶排序、基排序、基数排序)
3.数据结构及其相关算法:
①线性结构:栈、队列、链表、跳表;
②二叉树:与树有关的算法,一般包含搜索、插入、删除,二叉搜索树bst、avl 树(高度差为1,调整包括左旋、右旋、先左后右、先右后左)、红黑树(满足黑色节点和红色节点的性质);线索二叉树(利用叶子结点的空指针指向前驱结点或者后继结点,避免指针空间的浪费,相当于双向链表)
多叉树:b树,用于磁盘或者数据库的存储与搜索;
大话数据结构:树与二叉树的转换、霍夫曼树+霍夫曼编码(应用:数据压缩,先构建哈夫曼树得到加权路径长度wpl,然后得到哈夫曼编码对数据进行编码,起到压缩作用)
③图结构:采用python字典结构(散列表)建图,包含不加权的广度优先搜索、狄克斯特拉加权图寻找最短到达路径;
北京大学】数据结构与算法Python版(完整版):
表示方法:邻接矩阵(容易浪费存储空间造成稀疏矩阵)、邻接表(存储比较紧凑,高效),封装类
算法:BFS、DFS、
应用:拓扑排序(最优次序排序DFS)、最小生成树(用于路由广播消息的,保证只走每个节点一次不重复,保持最小连通边的图结构,Prim算法解决最小生成树,属于贪心算法)、最短路径(dijkstra算法:BFS+带权重)
④散列表:哈希,哈希寻址,哈希冲突;完美散列函数:md5,sha,用于文件比较,谷歌的登录密码sha散列值比较
⑤数论:欧几里得gcd求最大公约数、rsa加密解密算法;
⑥ 求topk:大根堆+比较堆顶+调整堆;
⑦ 第k大数:分治+找左最大、右最小;
4.查找算法:顺序、二分、bst、avl、b tree、散列
5. 串:朴素模式匹配,kmp模式匹配
6.懒猫老师:
①特殊矩阵的压缩:对称矩阵压缩(存储下三角,找对应关系)、三角矩阵、稀疏矩阵(三元组用来记录(行号、列号、值))
②二叉树、树、森林的转换
③二叉线索树(二叉链表,找到前驱和后继)
④表结构:
DFS:压栈 BFS:队列
最小生成树:包含全部顶点的极小连通图,含有N-1条边,多一条则构成回路,少一条则构成边,每条边都有代价,使得代价最小;Prim算法,Kruskal算法;
最短路径:Dijkstra算法,带权网图求代价最小,路由算法;Floyd算法
AOV网及拓扑排序:AOV网表示活动(顶点)及优先关系(边)。案例:教学课程依赖关系的排序。考虑入度
AOE网与关键路径:AOV+带权,举例:汽车从生产到组装的最短时间,可以帮助缩短整体时间
其他算法:参看算法图解(布隆过滤器、)