清华大学 数据结构 考试题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2. 大O记号
假定 int 字长无限,移位属基本操作,rand()理想随机,且递归不会溢出
5 x4
试给出以下函数 F(n)渐进复杂度的紧上界:
void F(int n) { //O(
n2
)
for (int i = 0; i < n; i ++)
for (int j = i; j < n; j ++);
00240074,2011 年 12 月 29 日 姓名:
20
题号
1
ຫໍສະໝຸດ Baidu
2
3
4
5
6

得分
0. 预备
请关闭手机、计算器等电子设备;确认共 2 页无缺页、错页;各页注明学号,首页注明姓名
1. 正误判断
2 ×20
F 序列的起泡排序过程中,尽管各元素移动速度很慢,但绝不会朝远离最终位置方向逆向移动。
T 若每一递归实例本身仅需常数时间,则线性递归函数的渐进时间复杂度等于空间复杂度。
01 MI
next[j]
-1 0
改进的 next[j] -1 0
234 AMI 001 0 -1 0
j Pattern[j]
0123456 BARBARA
next[j]
-1 0 0 0 1 2 3
改进的 next[j] -1 0 0 -1 0 0 3
4. 散列
10
设有一个容量为 M = 17 的散列表 H[],采用除留余数法确定地址,采用单向平方试探法解决冲突。
C
4
B
第2/2页
T 由合法的先序遍历序列和中序遍历序列,可唯一确定二叉树的结构。
T 在 AVL 树插入节点之后若树高增加,则不可能做过任何旋转调整。
F 在 AVL 树删除节点之后若树高降低,则必然做过旋转调整。
二路归并 二分查找 Fibonacci 查找 RPN Huffman 编码
完全二叉树 满树 AVL 树 B-树 Prim Dijkstra KMP Quicksort ... ...
现从空表开始依次插入关键码{2010, 7, 4},试给出生成的散列表。
bucket# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
key
2010 4
7
5. 就地堆排序
10
采用就地堆排序算法处理以下整型向量,试依次给出堆初始化以及后续各次迭代之后向量的内容。
rank
//每轮i都左移i位,相当于i = 2^i(自取幂)
//迭代次数 = 以自取幂的速度从1升到n的步数
//
= 以自对数的速度从n降到2的步数
第1/2页
00240074,2011 年 12 月 29 日 姓名:
20
3. KMP算法
5 x2
计算以下模式串的 next[]表及改进的 next[]表。
j Pattern[j]
}
//n + (n-1) + (n-2) + … + 1
void F(int n) { //expected-O( nlogn
)
for (int i = n; 0 < i; i --)
if (0 == rand() % i)
for (int j = 0; j < n; j ++);
}
//(1 + 1/2 + ... + 1/(n-1)) * n
void F(int n) { //O(
n
)
for (int i = 0; i < n; i ++)
for (int j = 1; j < 2011; j <<= 1);
}
//n * log22011
void F(int n) //O(
log*n
)
{ for (int i = 1; i < n; i = 1 << i); }
0
1
2
vector
6
8
1
heap
8
6
1
1
6
1
8
2
1
6
8
3
1
6
8
6. DFS
10
某有向图的邻接矩阵如下所示,现从顶点 1 出发做深度优先遍历,遇多顶点歧义时编号小者优先。
试在右侧矩阵中标出各边的分类结果(树边 T,前向边 F,后向边 B,跨边 C)
01234
1
111
2
1
3
1
4
1
01234
1
TTF
2
T
3
相关文档
最新文档