README
教材:《数据结构、算法与应用 c++语言描述 原书第二版》
本重点适用于计算机学院,后续可能变更重点,对其他学校、学院或其他年级的同学仅供参考
初衷是考试前一天通篇复习的时候记录一下,希望能帮到大家
按照数据结构分类,特别列出常考应用,加粗部分为重中之重,有“了解”字样的了解即可
线性结构
- 程序时间复杂度的计算,大O,小o,会判断某个程序片段或者算法的时间复杂度;了解空间复杂度
- 几大排序算法:名次排序、插入排序、选择排序、冒泡排序、堆排序、快速排序、归并排序、桶排序、基数排序(其中选择、冒泡需要了解及时终止的方法),各方法的基本思想、时间复杂度
- 线性表的基本方法
- 链表的思想、实现方法以及基本方法;了解头结点、循环链表、双向链表
- 多维数组和矩阵的存储与映射方式;了解特殊矩阵、稀疏矩阵
- 栈的思想、实现以及基本方法
- 队列的思想、在一维数组中的映射、循环队列、链式队列
- 字典的概念与线性表描述、理想散列与线性探查以及其他方法、链式散列
层次结构
- 树的相关概念、二叉树、完全二叉树的特性、链式描述、二叉树的四种遍历方法
- 堆的基本操作、初始化堆、重构堆
- 左高树的基本操作、合并
- 二叉搜索树(特征)、索引二叉搜索树的基本操作(特别是删除)
- AVL树的基本操作(构建、插入、删除)、不平衡旋转操作
- B-树的基本操作(插入、删除)
网状结构以及算法
- 图的基本概念、基本操作;了解权图、有向图
- 图的遍历:bfs、dfs
- 贪婪算法的基本思想、分治算法的基本思想;了解动态规划基本思想
常考应用
- 链表——箱子排序、基数排序、并查集
- 栈——括号匹配、汉诺塔、列车重排(包括队列实现)
- 树——通过二叉树的两个遍历序列还原二叉树、设置信号放大器、层次并查集实现
- 优先级队列——堆排序、霍夫曼编码
- 贪婪算法——机器调度、0-1背包问题、拓扑排序、单元最短路径(Dijkstra算法)、最小生成树(kruskal算法、prim算法)
- 分治算法——归并排序、快速排序
- 算法设计