📜  数据结构和算法 | 7套

📅  最后修改于: 2021-09-28 09:31:32             🧑  作者: Mango

以下问题已在 GATE CS 2006 考试中提出。

1. 在包含 n 个数字的二进制最大堆中,可以及时找到最小元素(GATE CS 2006)
(A) 0(n)
(B) O(logn)
(C) 0(loglogn)
(四) 0(1)

答案 (A)
在最大堆中,最小元素总是出现在叶节点上。所以我们需要检查所有叶子节点的最小值。最坏情况复杂度为 O(n)

12
        /  \
      /      \
    8         7
   / \        / \
 /     \    /     \
2      3   4       5

2.在数组X中存储二叉树的方案如下。 X 的索引从 1 而不是 0 开始。根存储在 X[1]。对于存储在 X[i] 的节点,左孩子(如果有)存储在 X[2i] 中,右孩子(如果有)存储在 X[2i+1] 中。为了能够在 n 个顶点上存储任何二叉树,X 的最小大小应该是。 (GATE CS 2006)
(一) log2n
(B) n
(C) 2n + 1
(D) 2^n — 1

答案 (D)
对于右偏二叉树,节点数为 2^n – 1。例如,在下面的二叉树中,节点 ‘A’ 将存储在索引 1,’B’ 存储在索引 3,’C’ 存储在索引 7以及索引 15 处的“D”。

A
 \
   \
    B
      \
        \
         C
           \
             \
              D

3. 以下哪一种就地排序算法需要最少的交换次数? (GATE CS 2006)
(A) 快速排序
(B) 插入排序
(C) 选择排序
(D) 堆排序

答案 (C)
对于选择排序,所需的交换次数最少( Θ(n) )。

4. 如果数组 X 中的元素大于 X 中它右侧的所有元素,则称为领导者。 查找数组中所有领导者的最佳算法(GATE CS 2006)
(A) 使用从左到右的数组遍历在线性时间内求解
(B) 使用数组的从右到左遍历在线性时间内求解
(C) 用分而治之的方法解决它 8(nlogn)
(D) 及时解决 8(n2)

答案 (B)
请参阅此帖子以获取解释。

5. 考虑顶点集 {v1, v2, ..vn} 上的加权完全图 G,使得边 (vi, vj) 的权重为 2|ij|。 G 的最小生成树的权重为:(GATE CS 2006)
(A) n — 1
(B) 2n — 2
(C) nC2
(四) 2

答案 (B)
这种图的最小生成树是

v1
  \
    v2
      \
       v3
         \
          v4
            .
              .
                .
                 vn
 

最小生成树的权重
= 2|2 – 1| + 2|3 – 2| + 2|4 – 3| + 2|5 – 4| …… + 2| n – (n-1) |
= 2n – 2

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