📜  数据结构和算法 | 28套

📅  最后修改于: 2021-09-27 15:18:20             🧑  作者: Mango

GATE 2012 考试中提出了以下问题。

1) 让 w(n) 和 A(n) 分别表示在大小为 n 的输入上执行的算法的最坏情况和平均情况运行时间。以下哪一项总是正确的?
(A) A(n) = Ω(W(n))
(B) A(n) = Θ(W(n))
(C) A(n) = O(W(n))
(D) A(n) = o(W(n))

答案 (C)
最坏情况的时间复杂度总是大于或等于平均情况的时间复杂度。

2) 在具有 n2^n 个元素的二叉搜索树中搜索平衡元素的最坏情况运行时间是
(A) Θ(n log n)
(B) Θ(n2 n )
(C) Θ(n)
(D) Θ(log n)

答案 (C)
搜索元素所花费的时间是 Θ(h),其中 h 是二叉搜索树 (BST) 的高度。平衡 BST 的高度增长在节点数量方面是对数的。因此,搜索元素的最坏情况时间将是 Θ(Log(n*2^n)) 即 Θ(Log(n) + Log(2^n)) 即 Θ(Log(n) + n)可以写成 Θ(n)。

3) 假设 P != NP,以下哪项是正确的?
(A) NP-完全 = NP
(B) NP-完全 ∩ P = Φ
(C) NP-hard = NP
(D) P = NP-完全

答案 (B)
答案是 B(多项式时间内不能解决 NP-Complete 问题)。因为,如果一个NP-Complete问题可以在多项式时间内解决,那么所有NP问题都可以在多项式时间内解决。如果是这种情况,则 NP 和 P 集变得相同,这与给定条件相矛盾。

4)树的高度定义为树中最长路径上的边数。下面伪代码中显示的函数作为高度(根)调用,以计算以树指针根为根的二叉树的高度。

两个框 B1 和 B2 的适当表达式是
(A) B1 : (1 + height(n->right)), B2 : (1 + max(h1,h2))
(B) B1 : (height(n->right)), B2 : (1 + max(h1,h2))
(C) B1 : height(n->right), B2 : max(h1,h2)
(D) B1 : (1 + height(n->right)), B2 : max(h1,h2)

答案 (A)
当 n 的左子树为 NULL 且右 sbtree 不为 NULL 时,框 B1 被执行。在这种情况下,n 的高度将是右子树的高度加一。
当 n 的左右 sbtree 都不为 NULL 时,框 B2 被执行。在这种情况下,n 的高度将是 n 的左右 sbtree 高度的最大值加 1。

5) 一个包含 n 个字符串的列表,每个长度为 n,使用合并排序算法按字典顺序排序。此计算的最坏情况运行时间是
(A) O(n log n )
(B) O(n 2 log n)
(C) O(n^2 + log n)
(D) O(n^2)

答案 (B)
归并排序的循环树的高度为 Logn。并且 O(n 2 ) 工作将在循环树的每个级别上完成(每个级别涉及 n 次比较,在最坏的情况下,比较需要 O(n) 时间)。所以这个归并排序的时间复杂度为 O(n 2 log n)。

请参阅GATE Corner了解所有往年论文/解决方案/解释、教学大纲、重要日期、笔记等。