- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Prim 算法和Kruskal算法的执行过程以及时间复杂度等。 Dijkstra算法和Floyd算法在执行过程中,辅助数据结构的变化 (即迭代过程)。拓扑排序的过程和结果。AOE网求关键路径的 过程中各参量的变化,包括事件的最早发生事件和最迟发生时 间、活动的最早开始时间和最晚开始时间。有关图的算法设计 都可以通过修改图的遍历算法实现。 静态和动态查找的具体方法、平均查找长度的定义等。折 半查找重点。二叉排序树的算法设计。平衡二叉树的定义和平 衡调整的过程,判断平衡旋转的类型、进行平衡旋转等。 B—树与B+树的定义、特点、深度与关键码个数之间的关 系、B—树的插入和删除的操作过程等。 散列的基本思想、处理冲突的方法、平均查找长度的计算 等。主要考查应用各种散列函数以及各种处理冲突的方法构造 散列表的过程,以及计算查找成功情况下的平均比较次数。
矩阵元素的寻址:一种是给出压缩存储的首地址和每 个元素占用的地址空间,求矩阵中某元素在存储数组中的 位置;另一种是直接求矩阵中某元素在存储数组中的下标。 广义表的概念、取表头表尾的含义。 二叉树的性质(证明过程和方法)、遍历、各种遍历 序列的特点(如根结点在什么位置、某结点在某种遍历次 序下的后继有什么特点)等。二叉树的算法设计,哈夫曼 树的构造过程和特点、哈夫曼编码的构造。由二叉树的两 个遍历序列的组合构造二叉树。 图中顶点与边数的关系、连通分量和强连通分量的含 义、生成树的含义等。邻接矩阵和邻接表的存储方法、存 储特点、所需存储空间,以及基于邻接矩阵和邻接表存储 结构基本操作的实现方法。深度优先遍历序列和广度优先 遍历序列。
处理步骤
1)初始化败者树:
调整败者树原则: 段号小者为胜者 段号相同,关键字小的为胜者
2)置当前段号rnum=1;
3)若 ls[0]指示的外部结点属于当前段,输出该记录;
否则,当前段号+1,输出段标后再输出该记录; 4)若FI未空,从FI补充记录, 若补充key<此前输出记录的key,则rnum=当前段号+1 否则rnum=当前段号 否则补虚记录:key=; rnum=当前段号+1; 5)调整败者树 转3)直至所有记录被输出
数据结构的基本概念,数据的逻辑结构、数据的存储结 构、抽象数据类型、算法的基本概念,算法时间性能的度量 方法、时间复杂度的分析等有关内容。 线性表的两种基本的存储方法(顺序表和单链表),基 本操作(查找、插入、删除)的实现。遍历单链表是最基本 也是最典型的算法。 栈的基本操作(初始化、进栈、出栈、判空等)在不同 存储结构(顺序栈和链栈)下的执行过程。元素以同样顺序 进栈后判断出栈的不同情况。两栈共享空间的存储方法、栈 底的位置和栈顶指针的变化。队列的基本操作(初始化、入 队、出队、判空等)在不同存储结构(循环队列和链队列) 下的执行过程。循环队列队空和队满的判断方法。KMP算法 的执行过程。
基于比较的排序方法,排序问题的时间下界,排序算法 稳定性的含义、基于的数据结构等。快速排序的特点与方法 是重点,堆排序是难点和重点。 在深刻理解各种排序方法的基础上,综合比较各种排序 方法。理解各种排序方法的执行过程与影响各种排序算法性 能的因素。 置换-选择排序。
总 结
用计算机解决任何实际问题都离不开数据表示和数据处 理,而数据表示和处理的核心问题之一是数据结构及其实现 ——本课程的基本内容。数据结构课程在知识学习和技能培 养两个方面都处于关键性地位,是理论和实践要求都相当高 的课程。本课程为后续课程提供必要的知识基础和必要的技
最佳归并树的构造
对3叉树,初始归并段数不足时,需附加长度为0的“虚 段”,且其离树根最远。对严格3叉树,必有n3=(n0-1)/2,而 n3为整数,则(n0-1)mod 2=0。即对3路归并,初始归并段个数 为偶数时,需加一个虚段。 最佳归并树即k叉(阶)哈夫曼树 设初始归并段为m个,进行k-路归并 1)若 (m-1) mod (k-1) 0 则需附加(k-1)- (m-1) mod (k-1) 个长度为0的虚段, 以使每次归并都可以对应k个段 2)按照哈夫曼树的构造原则(权值越小的结点离根结点越远) 构造最佳归并树。
k阶哈夫曼树示例
长度分别为2,3,6,9,12,17,18,24的8 个初始归并段进行3路归并,求最佳归并树。 91 24 9
5 0 2 3
20 6
47 12 17
18
I/O次数:
[(2+3)3 + (6+9+12+17+18)2 + 241] 2 = 326
课程内容回顾
主要内容是围绕 着线性表、栈与 队列、数组、树 与二叉树、图这 几种基本的数据 结构以及查找和 排序这两种常用 的数据处理技术 来组织的。
[示例]利用败者树
FO 空 WA(4个记录) 空 FI 36,21,33,87,23,7,62,16, 54,43,29,… 空 21 21,23 21,23,33 21,23,33,36 21,23,33,36,62 21,23,33,36,62,87 21,23,33,36,62,87||7 … 36,21,33,87 36,23,33,87 36,7,33,87 36,7,62,87 16,7,62,87 16,7,54,87 16,7,54,43 16,29,54,43 23,7,62,16,54, 43,29,… 7,62,16,54, 43,29,… 62,16,54,43,29,… 16,54,43,29,… 54,43,29,… 43,29,… 29,… …
置换-选择排序
置换-选择排序
[目标] 减少初始合并段数m,以减少归并趟数。扩大初始归 并段长度,突破内存工作区容量(设l个记录)的限制。 [置换-选择排序原理] 内存 内存工作区 WA (l个记录)
外存 原始文件 FI 初始归并段文件 FO
为简化问题,设每个物理块存放一个记录
1) 从FI输入l个记录到工作区WA; 2) 在FO中标记一个归并段开始; 3) 从WA中选出最小关键字记录,记为minimax记录; 4) 将minimax记录输出到FO中; 5) 从FI输入下一个记录到WA中; 6) 在WA中的关键字比minimax大的记录中选出关键字最 小的记录 6.1) 若不能选到,在FO中标记一个归并段结束; 若由于WA为空而未选出,则结束处理; 否则,标记下一个归并段开始,转 3) 6.2) 否则,将选出的记录作为新的minimax记录,转 4)
Baidu Nhomakorabea
能训练。
数据结构+算法=程序
16
复习内容
置换-选择排序的效果
所得初始排序段的长度不等
当输入文件记录的关键字大小随机分布时,初始归 并段的平均长度为内存工作区大小 l 的两倍
最佳归并树
文件经过置换-选择排序之后,得到长度不等的初始 归并段,进行k路归并时,初始归并段的不同搭配,会导 致归并过程中I/O的次数不同。 设有9个初始归并段,记录个数(长度)分别为: 9,30,12,18,3,17,2,6,24 方 3-路归并 121 121 案 方 51 38 32 30 32 59 二 案 一 9 30 12 18 3 17 2 6 24 11 9 12 17 18 24 2 3 6 (9+30+12+18+3+17+2+6+24)2 [(2+3+6) 3+(9+12+17 I +(51+38+32) 2 O +18+24) 2+30 1] 2 =484 =446