2017年杭州师范大学数据结构(同等学力加试)复试实战预测五套卷
● 摘要
一、应用题
1. 试证明:同一棵二叉树的所有叶结点,在前序序列、对称序序列以及后序序列中都按相同的
,例如前序后序运对称序。 相对位置出现(即先后顺序相同)
,中序遍历是“左根右”,后序遍历是“左右根”【答案】前序遍历是“根左右”。三种遍历中
只是访问 " 根”结点的时机不同,对左右子树均是按左右顺序来遍历的,因此所有叶子都按相同的相对位罝出现。
2. 阅读下列算法,指出算法A 的功能和时间复杂性。
【答案】功能:将原单循环链表分解成两个单循环链表:其一包括结点h 到结点g 的前驱结点;另一个包括结点g 到结点h 的前驱结点。
时间复杂度:0(n )。
3. 请写出应填入下列叙述中( )内的正确答案。
排序有各种方法,如插入排序、快速排序、堆排序等。
设一数组中原有数据如下:15,13,20,18,12,60。下面是一组用不同排序方法进行一遍排序后的结果。
( )排序的结果为:12,13,15,18,20,60
( )排序的结果为:13,15,18,12,20,60
( )排序的结果为:13,15,20,18,12,60
( )排序的结果为:12,13,20,18,15,60
【答案】①快速排序②起泡排序③直接插入排序④堆排序
4.
已知一个整数序列
其中
则称x 为A 的主元素。
例如若存在
且则称5为主元素;
又如
则A 中没有主元素。假设A 中的n 个元素保存在一个一维数组中,请设计一个
尽可能高效的算法,找出A 的主元素。若存在主元素,则输出该元素;否则输出-1。要求:
(1)给出算法的基本设计思想。
(2)根据设计思想,采用C 或
【答案】 或Java 语言描述算法,关键之处给出注释。 (3)说明你所设计算法的时间复杂度和空间复杂度。
(1)算法的策略是从前向后扫描数组元素,标记出一个可能成为主元素的元素Num 。然后重新计数,确认Num 是否是主元素。
算法可分为以下两步:
①选取候选的主元素:依次扫描所给数组中的每个整数,将第一个遇到的整数Num 保存到c 中,记录Num 的出现次数为1; 若遇到的下一个整数仍等于Num ,则计数加1否则计数减1; 当计数减到0时,将遇到的下一个整数保存到c 中,计数重新记为1,开始新一轮计数,即从当前位置开始重复上述过程,直到扫描完全部数组元素。
②判断c 中元素是否是真正的主元素,再次扫描该数组,统计c 中元素出现的次数,若大于则为主元素;否则,序列中不存在主元素。
(2)算法实现如下:
用来保存候选主元素,count 用来计数
设置A [0]为候选主元素
查找候选主元素
为A 中的候选主元素计数
处理不是候选主元素的情况
更换候选主元素
统计候选主元素的实际出现次数
确认候选主元素
不存在主元素
,空间复杂度为O (1)(3)时间复杂度为O (n )。
5. 假设计算机系统采用CSCAN (循环扫描)磁盘调度策略。使用2KB 的内存空间记录16384个磁盘块的空闲状态。
(1)请说明在上述条件下如何进行磁盘空闲状态的管理。
(2)设某单面磁盘旋转速度为每分钟6000转,每个磁道有100个扇区,相邻磁道间的平均移动时间为lms 。若在某时刻,磁头位于100号磁道处,并沿着磁道号增大的方向移动(如下图
,所示)磁道号请求队列为50, 90, 30, 120, 对请求队列中的每个磁道需要读取1个随机分布的扇区,则读完这4个扇区总共需要多少时间? 要求给出计算过程。
图
SSD 等),(3)如果将磁盘替换为随机访问的FLash 半导体存储器(如U 盘、是否有比CSCAN
更高效的磁盘调度策略? 若有,给出磁盘调度策略的名称并说明理由;若无,说明理由。
【答案】(1)采用位示图法管理磁盘空闲块,每一位表示一个磁盘块的状态,共需要16384/32=512个字节即2KB 的空间,正好可放在系统提供的内存中。
(2)采用CSCAN 调度算法,访问磁道的顺序和移动的磁道数如下表所示:
故移动的磁道数为20+90+20+40=170, 所花的时间为170ms 。由于转速为
花的时间为0.4ms 。综上所述,读取磁道上所有扇区所花的总时间为
考虑寻道时间和旋转延迟,可直接按
请求的先后顺序服务。 则平均旋 转延迟为5ms ,总的旋转延迟时间为20ms ,读取一个扇区的平均时间为0.1ms , 故读取4个扇区所(3)采用先来先服务(FCFS )调度策略更高效,因为Flash 半导体存储器的物理结构不需要
相关内容
相关标签