复习大纲v1.docx
- 文档编号:30399682
- 上传时间:2023-08-14
- 格式:DOCX
- 页数:12
- 大小:41.42KB
复习大纲v1.docx
《复习大纲v1.docx》由会员分享,可在线阅读,更多相关《复习大纲v1.docx(12页珍藏版)》请在冰豆网上搜索。
复习大纲v1
第一章概论
1.数据结构的基本概念和术语
⏹数据、数据元素、数据项、数据对象、数据结构等基本概念
⏹数据结构的逻辑结构,存储结构及数据运算的含义及其相互关系
⏹数据结构的四种逻辑结构及四种常用的存储表示方法
⏹抽象数据类型的概念及其与数据结构的关系
2.算法的描述和分析。
⏹算法、算法的时间复杂度和空间复杂度的概念
⏹算法描述和算法分析的方法
第二章线性表
1.线性表的逻辑结构
⏹线性表的逻辑结构特征
⏹线性表本身是一种逻辑结构,其特征为:
1.仅有一个被称为头元素的元素
2.仅有一个被称为尾元素的元素
3.除第一个元素外,每个元素仅有一个直接前驱
4.除最后一个元素外,每个元素仅有一个直接后继
⏹线性表上定义的基本运算,并能利用基本运算构造出较复杂的运算
⏹查找插入删除
2.线性表的顺序存储结构
⏹顺序表的存储方式及它如何映射线性表中元素之间的逻辑关系
⏹逻辑上相邻,物理上也相邻
⏹顺序表的存储结构定义(C语言的类型描述)
⏹Typedefstructnode{
⏹Intdata;
⏹Structnode*next;
⏹}
⏹线性表基本运算在顺序表上的实现方法及其时间性能分析
⏹
⏹利用顺序表设计算法解决应用问题
⏹
3.线性表的链式存储结构
⏹链表的存储方式及它如何映射线性表中元素之间的逻辑关系
⏹链表中头指针和头节点的使用
⏹单链表、双链表、循环链表在链接方式上的区别
⏹各种链表的存储结构定义(C语言的类型描述)
⏹线性表基本运算在链表上的实现方法及其时间性能分析
⏹循环链表上尾指针取代头指针的作用
⏹利用链表设计算法解决简单的应用问题
4.顺序表和链表的比较
⏹顺序表和链表的主要优缺点
⏹根据应用问题的时空要求,为线性表选择合理的存储结构
第三章栈和队列
1.栈的逻辑结构,存储结构及其相关算法
⏹栈的逻辑结构特点,栈与栈性表的关系
⏹顺序栈和链栈的存储结构定义(C语言的类型描述)
⏹顺序栈和链栈上进栈、退栈等基本运算的实现方法
⏹栈上的“上溢”和“下溢”的概念及其判别条件
⏹递归过程中栈的作用
⏹设计递归程序的原则和方法
⏹利用栈设计算法解决简单的应用问题
2.队列的逻辑结构,存储结构及其相关算法
⏹队列的逻辑结构特点,队列与线性表的关系
⏹顺序队列和链队列的存储结构定义(C语言的类型描述)
⏹顺序队列(主要是循环队列)和链队列上入队、出队等基本运算的实现方法
⏹队列的“上溢”和“下溢”的概念及其判别条件
⏹循环队列取代普通的顺序队列的原因
⏹利用队列设计算法解决简单的应用问题
第四章串
1.串及其运算
⏹串的概念及其与线性表的关系
⏹串上定义的基本运算,并能利用基本运算构造出较复杂的运算
2.串的存储结构和基本运算的实现
⏹串的两种主要存储结构—顺序串和链串的存储结构定义(C语言的类型描述)
⏹顺序串上串的基本运算的实现
⏹朴素的模式匹配算法与KMP算法的算法思想及时间复杂度分析
⏹KMP算法中next和nextval数组的求值方法
第五章数组和广义表
1.多维数组
⏹多维数组的逻辑结构特征,多维数组和线性表的关系
⏹多维数组的顺序存储结构及地址计算方法
⏹数组是一种随机存取结构的原因
2.矩阵的压缩存储
⏹特殊矩阵和稀疏矩阵的概念
⏹特殊矩阵在压缩存储时的下标变换方法
⏹稀疏矩阵的三元组表和十字链表表示方法
3.广义表
⏹广义表的有关概念及其与线性表的关系
⏹求给定非空广义表的表头和表尾运算
第六章树
1.树的概念
⏹树的逻辑结构特征
⏹树的常用术语及含义
2.二叉树
⏹二叉树的定义,二叉树与树的差别
⏹完全二叉树和满二叉树的概念
⏹二叉树的性质
⏹二叉树的顺序存储结构和链式存储结构的定义(C语言的类型描述)和表示方法
3.二叉树的遍历
⏹二叉树的先序、中序、后序、层序遍历算法
⏹求给定二叉树的先序、中序、后序遍历对应的结点访问序列
⏹由二叉树的先序和中序、中序和后序、中序和层序的序列确定二叉树
⏹以遍历算法为基础,设计有关算法解决简单的应用问题
4.线索二叉树
⏹二叉树线索化的目的
⏹线索二叉树存储结构的表示方法
⏹在线索二叉树中查找给定结点的前趋和后继的方法
5.树和森林
⏹树和森林与二叉树之间的转换方法和对应关系
⏹树的各种存储结构的表示方法及其特点
⏹树的先序和后序遍历方法
⏹森林的先序和中序遍历方法
6.哈夫曼树及其应用
⏹最优二叉树的概念及特点
⏹求哈夫曼树的方法
⏹设计哈夫曼编码的方法
第七章图
1.图的概念
⏹图的逻辑结构特征
⏹图的常用术语及含义
2.图的存储结构
⏹图的邻接矩阵的存储结构定义(C语言的类型描述)及表示法和特点
⏹图的邻接表的存储结构定义(C语言的类型描述)及表示法和特点
3.图的遍历
⏹图的深度优先搜索和广度优先搜索遍历算法及时间性能
⏹确定两种遍历所得到的顶点访问序列
⏹图的两种遍历与树的遍历之间的关系
⏹利用图的两种遍历设计算法解决简单的应用问题
4.生成树和最小生成树
⏹生成树和最小生成树的概念
⏹对给定的图画出深度和广度优先生成树或生成森林
⏹Prim和Kruskal算法的基本思想
⏹对给定的连通图,根据Prim和Kruskal算法构造出最小生成树
5.有向无环图的应用
⏹拓扑排序的基本思想和步骤
⏹拓扑排序不成功的原因
⏹求给定AOV网的拓扑序列
⏹关键路径、关键活动的概念
⏹求AOE网的关键路径的步骤和方法
⏹对给定的AOE网,求关键路径和工期
6.最短路径
⏹最短路径的含义
⏹求单源最短路径的Dijkstra算法的基本思想和时间性能
⏹对于给定的有向图,画出根据Dijkstra算法求单源最短路径的过程示意图
⏹求每一对顶点间最短路径的Floyd算法的基本思想和时间性能
⏹D(k)[i,j](0≤k≤n-1)的含义
⏹对于给定的有向图,用Floyd算法求每一对顶点之间的最短路径长度,能写出D(-1),D(0),……D(n-1) 的值
第八章查找
1.基本概念
⏹静态查找表和动态查找表的含义
⏹平均查找长度ASL的定义
2.静态查找表
⏹顺序查找、折半查找、分块查找的算法思想、算法实现、ASL的分析计算
⏹折半查找对存储结构和关键字的要求
⏹三种查找方法的主要优缺点
3.动态查找表
⏹二叉排序树的定义、特点和用途
⏹二叉排序树的查找方法和算法实现、ASL的分析和计算
⏹二叉排序树的插入、删除、建树方法
⏹输入实例对所建二叉排序树形态的影响
⏹平衡二叉树的定义和作用
⏹平衡二叉树插入结点及生成过程中的调整方法
⏹B-树的定义
⏹B-树上的查找、插入、删除、生成方法
⏹B+树的定义
⏹B+树上的查找方法
4.哈希表
⏹哈希表、哈希函数、哈希地址和装填因子等有关概念
⏹哈希函数的选取原则及产生冲突的原因
⏹常用的哈希函数的构造方法
⏹解决冲突的主要方法
⏹产生“堆积”现象的原因
⏹哈希表查找和其它表查找的本质区别。
⏹采用线性探测法或链地址法解决冲突时,哈希表的建表方法、查找过程以及ASL的分析计算
第九章内部排序
1.基本概念
⏹排序方法的稳定性的含义基数冒泡直接归并锦标赛
⏹排序算法评价标准
2.插入排序
⏹直接插入排序的基本思想、算法实现、时空性能//依次将数据插入已经排好的序列中
⏹希尔排序的基本思想和时空性能//按照提前设定好的间隔进行排序直到d==1;
3.交换排序
⏹冒泡排序的基本思想、算法实现、时空性能
⏹若文件的初始状态是正序的,一趟扫描即可完成排序。
所需的关键字比较次数
⏹
⏹和记录移动次数
⏹
⏹均达到最小值:
⏹
⏹,
⏹
⏹。
⏹所以,冒泡排序最好的时间复杂度为
⏹
⏹。
若初始文件是反序的,需要进行
⏹
⏹趟排序。
每趟排序要进行
⏹
⏹次关键字的比较(1≤i≤n-1),且每次比较都必须移动记录三次来达到交换记录位置。
在这种情况下,比较和移动次数均达到最大值:
⏹
⏹
⏹冒泡排序的最坏时间复杂度为
⏹
⏹。
⏹综上,因此冒泡排序总的平均时间复杂度为
⏹
⏹
⏹快速排序的基本思想、算法实现、时空性能
⏹从第一个数开始作为比较数轴K从数组末尾j开始找到比K小的数然后从第二个i开始往后寻找比K大的数二者进行交换;直到i==j
⏹枢轴记录的选取对快速排序的影响
性能分析
•最坏情况(原始数据正/逆序排列)
Cmax=(n-1)+(n-2)+……+1=n(n-1)/2MmaxCminO(n2)
•最好情况:
每次划分的结果是基准的左、右两个无序子区间的长度大致相等
CminO(nlgn)MminCminO(nlog2n)
•平均时间性能Tavg(n)=knln(n)
k:
某个常数;n:
待排序序列中记录个数
就平均时间而言,快速排序是目前被认为最好的一种内部排序方法。
•辅助空间复杂度最好情况O(log2n)
最坏情况O(n)
⏹针对给定的输入实例,写出快速排序的每趟排序过程
4.选择排序
⏹简单选择排序的基本思想、算法实现、时空性能
⏹
⏹锦标赛排序的基本思想和时空性能
⏹
⏹堆的有关概念和定义
⏹
⏹堆的性质及堆与完全二叉树的关系
⏹堆排序的基本思想、算法实现、时空性能
⏹针对给定的输入实例,能写出堆排序的排序过程
5.归并排序
⏹两路归并排序的基本思想、算法实现、时空性能
⏹针对给定的输入实例,能写出归并排序的排序过程
6.基数排序
⏹基数排序的基本思想、时空性能。
⏹针对给定的输入实例能写出基数排序的排序过程
⏹基数排序和其它几类排序的本质区别
7.各种排序方法的比较
⏹掌握各种排序的主要特点
锦标赛排序:
时间复杂度:
O(nlog2n)辅助空间:
O(n)稳定
⏹根据实际问题的特点和要求选择合适的排序方法
•按平均时间排序方法分为四类
O(n2)、O(nlgn)、O(n1+)、O(n)
•快速排序是目前基于比较的内部排序中最好的方法
•关键字随机分布时,快速排序的平均时间最短,堆排序次之,但后者所需的辅助空间少
•当n较小时如(n<50),可采用直接插入或简单选择排序,前者是稳定排序,但后者通常记录移动次数少于前者
•当n较大时,应采用时间复杂度为O(nlgn)的排序方法(主要为快速排序和堆排序)或者基数排序的方法,但后者对关键字的结构有一定要求
•当n较大时,为避免顺序存储时大量移动记录的时间开销,可考虑用链表作为存储结构(如插入排序、归并排序、基数排序)
•快速排序和堆排序难于在链表上实现,可以采用地址排序的方法,之后再按辅助表的次序重排各记录
•文件初态基本按正序排列时,应选用直接插入、冒泡或随机的快速排序
•(当不需要对全局进行排序,仅仅需要找出前百分之几的元素可以选择锦标赛排序和堆排序但后者空间复杂度小)
第一十章外部排序
⏹外部排序的两个基本步骤
⏹1:
生成初始归并段
⏹2:
多趟归并
⏹
⏹常规外排序时内外存交换次数的计算
⏹
⏹
⏹提高外排序效率的两个手段:
⏹1:
减少初始归并段个数
2:
增加归并路数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 复习 大纲 v1