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

2018年北京大学地球与空间科学学院408计算机学科专业基础综合之数据结构考研核心题库

  摘要

一、算法设计题

1. 给定nxm 矩阵

并设

设计一算法判定x 的值是否在A 中,要求时间复杂度

为O(m+n) 。

【答案】算法如下:

//n*m矩阵A ,行下标从a 到b ,列下标从c 到d ,本算法査找x 是否在矩阵A 中

//flag是成功査到x 的标志

//假定x 为整型

(“矩阵A 中无

算法search 结束。

2. 设线性表存于A[l..size]的前mun 各分量中,且递增有序。请设计一个算法,将x 插入到线性表的适当位置上,以保持线性表的有序性,并在设计前说明设计思想,最后说明所设计算法的时间复杂度。

【答案】算法如下:

//A是Size 个元素空间但目前仅有num(num<size}个元素的线性表 //本算法将元素x 插入到线性表中,并保持线性表的有序性

//题目要求下标从1开始

//对分査找元素x 的插入位置

//元素后移

第 2 页,共 36 页

元素\n",x) ;

//将元素x 插人

算法结束

设计思想:算法中当查找失败(即线性表中无元素X) 时,变量low 在变量high 的右面(low=high +l) 。移动元素从位置low 开始,直到num 为止。

时间复杂度:查找的复杂度为O (logn),插入的时间复杂度为O (n),若用顺序查找,则查找的时间复杂度亦为O(n)。

3. 线性表中元素存放在向量A(1,... ,,1) 中,元素是整型数。试写出递归算法求出A 中的最大和最小元素。

【答案】算法如下:

//一维数组A 中存放有n 个整型数,本算法递归的求出其中的最小数和最大数

//算法结束

4. 对于任意的无符号的十进制整数m ,写出将其转换为十六进制整数的算法(转换仅要求能够输出正确的十六进制的整数即可) 。

【答案】算法如下:

//本算法将无符号十进制整数m 转换为十六进制整数

本算法的递归描述如下:

//本算法将无符号十进制整数m 转换为十六进制整数

第 3 页,共 36 页

5. 请运用快速排序思想,设计递归算法实现求n(n>1)个不同元素集合中的第f(

【答案】算法如下:

在后半部分继续进行划分

在前半部分继续进行划分

) 小元素。

二、应用题

6. 在某程序中,有两个栈共享一个一维数组空间SPACE[N]、SPACE[0]、SPACE[N﹣1]分别是两个栈的栈底。

(1)对栈1、栈2,试分别写出(元素X) 入栈的主要语句和出栈的主要语句。 (2)对栈1、栈2,试分别写出栈满、栈空的条件。 【答案】(1)入栈主要语句

//设X 为入栈元素

.

出栈主要语句

//返回出栈元素

//返回出栈元素

(2)

第 4 页,共 36 页