《数据结构与算法》知识点整理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构与算法》知识点整理
中山大学
吕双全
一,Introduction
1,基(mei)本(shen)概(me)念(yong)
数据结构研究数据的组织方式和相应的抽象操作。
2,结合其他数据结构的时间空间复杂度分析——如09级第9题
二,栈
1,栈的实现:顺序存储,注意push/pop/top等操作实现
2,栈的应用:括号匹配、后缀表达式计算等
三,队列
1,队列的实现:循环队列的数组实现,注意队头队尾的移动、下标的处理【i = (i + 1) % max】2,应用:广搜、树的层次遍历、机场调度等
四,链式(Linked)栈和队列
1,链式实现下的创建、插入、删除、查找。做题时要画出每个node的图,帮助理解。比如这样:
2,顺序和链式实现适用的场合
五,递归
1,s tack frame: 调用记录用栈保存
2,T ree of subprogram call或recusive tree:就是画执行过程中函数调用的顺序,类似下图:
3,设计递归算法(写代码)
4,递归的消除(如尾部递归);
(1)尾递归:(可能考概念,不会考实现)如果一个函数中所有递归形式的调用都出现在函数的末尾,
我们称这个递归函数是尾递归的。比如:,函数末尾调用了自己,所以是尾递归。
使用尾递归好处:节省栈的空间。
递归到非递归有两种方法:(i)迭代,根据递归算法画出
流程图,然后建立循环结构。(ii)设置栈。
5,理解回溯法,分治法。
六,线性表(List)和串(String)
1,list的操作的分析和实现(写代码):Insert插入,Remove删除,retrieve提取(数组中就是“a[3]”的形式提取),traverse遍历(对每个元素采取某种操作)
注:注意特殊情况,如头和尾的处理
2,对这些操作的时间复杂度分析:
(i) 顺序表实现(利用数组):Insert和Remove操作,平均移动一半元素,所以是O(n)。retrieve
则为O(1)。
(ii) 链式实现(写代码)
不同实现方式的比较:
3,广义表(General List):每个元素类型可以不同,也可以为子表。比如:C=(‘a’, (1,2,’b’)) 就是广义表。
七,查找
1,顺序查找如何实现,特点,复杂度。
注:复杂度就是查找长度:O(n)
2,二分查找的实现,二分查找的时间复杂度(O(log2n));
注:
(1)要求list必须是有序的
(2)代码掌握一下
3,linear index search线性索引查找:
复杂度:比二分查找差,为O(log2n) – O(n)之间3,Binary Search Tree二分查找树(也叫Binary Sort Tree)
(1),概念、复杂度
(2),查找过程及【代码实现】
【非递归方法】(3),【插入和删除操作】
【自己找一下代码!】4,AVL Tree
(1)定义
(2)插入、删除操作,及涉及的调整——详细看课件理解!
5,B和B+树——非重点
八,排序
0,排序大纲
1,重要排序——掌握原理、代码实现及手工画图分析过程、性能分析Insertion sort插入排序
Selection sort选择排序
Quick sort快速排序
Merge sort归并排序
Heap sort堆排序
2,性质概念
九,表格(Table)和信息检索(Information Retrieval)
1,多维数组在内存中存储次序——row major/column major (做题时带特殊值分析!)
2,特殊矩阵存储——知道如何与一维内存中的位置对应!
注:下图中strictly upper triangular matrix没包含对角线元素,但我们做题时应是普通的上三角,即当包含对角线元素。
此外还有Sparse matrix稀疏矩阵(非重点),对照课件简单看下如何存储
3,Hash——既是查找方式,也是存储方式
(1)大纲
(2)常用哈希函数
(3)Conflict (Collision) handling(重要,看课件复习细节)
其中Open addressing的实现有: linear probing和quadratic probing
十,二叉树(Binary Tree)
10.2.1 遍历二叉树
10.2.2 Threaded线索二叉树
10.3.1 遍历树的应用:(1)查找元素(2)统计叶节点个数(3)层次遍历二叉树10.3.2 哈弗曼树
1,二叉树(binary trees) 的概念, 层,高度,边数,结点数和度数等;
2,二叉树的链式存储结构,连续存储结构;
3,二叉树的遍历(前序、中序、后序、逐层)及其实现(递归和非递归);
4,二叉搜索树(binary search trees) 的概念;
5,二叉搜索树的搜索、插入、删除;
6,平衡二叉排序树(AVL trees)的概念和构造方法;
十一,树
重点关注树、森林和二叉树的转换方法
十二,图
1,图的概念(扫一眼课件)
2,图的两种表示法: Adjacent Matrix邻接矩阵与Adjacent List邻接表
3,图的Depth-First深度优先/Breadth-First广度优先遍历算法及其实现
4,拓扑排序及其实现
5,求Shortest path最短路径的算法(Prim/Kruskal)及其实现
6,求Minimum spanning tree最小生成树的算法及其实现
7,Critical path关键路径(比较少考,但最好看一下)