当前位置:问答库>考研试题

2018年大连海事大学交通运输管理学院813管理信息系统与数据结构之数据结构考研基础五套测试题

  摘要

一、填空题

1. 分别采用堆排序,快速排序,起泡排序和归并排序,对初态为有序的表,则最省时间的是_____算法,最费时间的是_____算法。

【答案】起泡;快速

【解析】当初态为有序表时,冒泡排序只需要进行一趟比较即可,此时时间复杂度为O(n),

2

而快速排序算 法需要比较的次数达到最大,时间复杂度为O (n) 。

2. 设有两个算法在同一机器上运行,其执行时闻分别为100n 2和2n ,要使前者快于后者,n 至

少为_____。

【答案】15

2n

【解析】当时,100n2>2n,而,时,100n <2

3. 应用prim 算法求解连通网络的最小生成树问题。

(1)针对如图所示的连通网络,试按如下格式给出在构造最小生成树过程中顺序选出的各条边。(始顶点号,终顶点号,权值

)

(2)下面是Prim 算法的实现,中间有5个地方缺失,请阅读程序后将它们补上。

的值在

图的顶点数,应由用户定义

用二维数组作为邻接矩阵表示

生成树的边结点

边的起点与终点

第 2 页,共 41 页

边上的权值

最小生成树定义

从顶点rt 出发构造图G 的最小生成树T , rt 成为树的根结点

初始化最小生成树

T

依次求MST 的候选边

遍历当前候选边集合

选具有最小权值的候选边

图不连通,出错处理

修改候选边集合

【答案】(1)

(2)

【解析】Prim 算法的执行类似于寻找图的最短路径的Dijkstra 算法。假设是N 上最小生成树边的集合。算法从属于

的边为止。

4. 完善算法:求KMP 算法.next 数组。

k :=_____;next[1]:=0;

k :=_____;

END ;

【答案】0;next[k]

属于E 中找一条代价最小的边

加入集合

是连通图

,v ,

直到

开始,重复执行下述操作:在所有u 属于

,同时将并入

第 3 页,共 41 页

5. 关键码序列(Q,H ,C ,Y ,Q ,A ,M ,S ,R ,D ,F ,X) ,要按照关键码值递增的次序进行排序,若采用初始步长为4的希尔排序法,则一趟扫描的结果是_____; 若采用以第一个元素为分界元素的快速排序法,则扫描一趟的结果是_____。

【答案】(Q,A ,C ,S ,Q ,D ,F ,X ,R ,H ,M ,Y) ; (F,H ,C ,D ,a ,A ,M ,Q ,R ,S ,Y ,X)

【解析】希尔排序的基本思想是:先将整个待排记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。

快速排序(quick sort) 的基本思想是,通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。

6. 求最短路径的Dijkstra 算法的时间复杂度为_____。

【答案】

7. 阅读下列程序说明和程序,填充程序中的_____。

【程序说明】本程序完成将二叉树中左、右孩子交换的操作。交换的结果如下所示。 本程序采用非递归的方法,设立一个堆栈stack 存放还没有转换过的结点,它的栈顶指针为tp 。交换左、右子树的算法为:

(1)把根结点放入堆栈。

(2)当堆栈不空时,取出栈顶元素,交换它的左、右子树,并把它的左、右子树分别入栈。 (3)重复(2)直到堆栈为空时为止。

【答案】

【解析】本题主要使用堆栈完成了二叉树左右子树交换的操作。首先根结点进栈,然后判断栈是否为空,如果不为空,则取栈顶元素,交换取出结点的左右指针。并将左右指针分别进栈,重复这一操作。完成二叉树左右孩子的交换。

第 4 页,共 41 页