2016年哈工大计算机科学与技术专业854考研真题
I.数据结构
选择题
设n是描述问题规模的非负整数,下面程序片段的时间复杂度是()。
Int x = n * n;
While (x >= 1) {
X = x / 2;
}
O(log2n)
O(n)
O(nlog2n)
O(n1/2)
需要分配一个较大的存储空间并且插入和删除操作不需要移动,元素满足以上特点的线性表存储结构是()。
单向链表
静态链表
线性链表
顺序表
已知字符串S为”ababcabcacbab”,模式串T为”abcac”。若采用KMP算法进行模式匹配,则需要()遍(趟匹配),就能确定T是S的子串。
3
4
5
6
已知某棵二叉树的前序序列是1,2,3,4,则不可能为该二叉树的中序序列的是()。
1,2,3,4
2,3,4,1
1,4,3,2
3,1,4,2
将森林F转换为对应的二叉树T,F中任何一个没有右兄弟的结点,在T中()。
没有左子树
没有右子树
没有左子树和右子树
以上都不对
一个含有n个顶点和e条边的无向图,在其邻接矩阵存储结构中共有()个零元素。
e
2e
n2-2e
n2-e
在一棵高度为2和7阶B树中,所含关键字的个数最少是()。
5
7
8
14
设待排序的元素个数为n,则基于比较的排序最坏情况下的时间复杂度的下界为()。
log2n
n
nlog2n
n2
下面关于B树和B+树的叙述中,不正确的是()。
B树和B+树都能有效地支持随机检索
B树和B+树都能有效地支持顺序检索
B树和B+树都是平衡的多路树
B树和B+树都可以用于文件的索引结构
若待排序关键字序列在排序前已按其关键字递增顺序排列,则采用()方法比较次数最少。
插入排序
快速排序
堆排序
选择排序
填空题
在一棵n个结点的二叉树中,所有结点的空子树个数为11。
若二叉树的一个叶结点是其某子树的中序遍历序列中的第一个结点,则它必是该子树的后序遍历序列中的第12个结点。
在有n个选手参加的单循环赛中,总共将进行13场比赛。
在有4033个叶子结点的完全二叉树中,叶子结点的个数为14个。
一个有向图G1的反向图是将G1的所有有向边取反而得到的有向图G2,若G1和G2的邻接矩阵分别为A,B,则A与B的关系为15。
N个顶点e条边的无环路有向图,若采用邻接表作为存储结构,则拓扑排序算法的时间复杂度为16。
在10阶B树中根结点所包含的关键字最多有17个,最少有18个。
在具有12个结点的平衡二叉树(AVL树)中,查找AVL树中的一个关键字最多需要(18)次比较。
对初态有序的表,最少时间的排序算法是(19)。
简答题
在n个数据中找出前K个最大元素,可以采用堆排序或败者树来实现。分别说明上述两种实现方法的基础步骤,并分析每种方法的时间复杂度和空间复杂度。
假设举办一个1000人参加的学术会议,作为会议报道组的负责人,你会收到会务组为每名参会者开具的包含其英文名字的注册费发票,同时还会收到为每位参会者提供的印有其英文名字的参会胸牌和其他会议资料。请回答以下问题:
如何有效地把每个参会者注册费发票和参会胸牌等其他会议资料放在一起形成一份参会资料?
如何在会议报道日更有效地把每份资料发放给参会者?
要求:说明你所使用的主要技术和相关步骤。
算法设计题
按以下要求设计算法:
描述算法设计的基本思想;
根据设计思想,采用C或C++或Java语言描述算法;
分析算法时间复杂度和空间复杂度。
给定一个n个整数的无序数组A,设计一个时间和空间尽可能高效的算法,找出其中第k个小的整数: int findTheKmin (int A[], int n, int k)。
给定一棵n个结点的二叉排序树(即BST),每个结点均存放一个整数,其结点格式为[lechild][data][rechild]。令half=(BST中的最大值+BST中的最小值)/2。设计一个算法intfindNearMid(BinTree * root),完成:
找出BST中最大和最小以及计算 half的值;
返回大于half且与half相差最小的结点值。
II.计算机组成原理部分
填空
在整数定点机中,采用1位符号位,若寄存器内容当它分别表示为原码、补码,及无符号数时,其对应的真值分别为1-1、1-2、1-3和1-4。(均用十进制表示)
变址寻址和基址寻址的区别是:在基址寻址中,基址寄存器提供2-1,指令提供2-2;而变址寻址中,变址寄存器提供2-3,指令提供2-4。
利用3-1指令进行输入输出操作的I/O编址方式为统一编址。
设n=16(不包括符号位),机器完成一次加和移位各需100ns,则原码一位乘最多需4-1ns,补码