📜  数据结构和算法 | 38套

📅  最后修改于: 2021-09-27 06:17:21             🧑  作者: Mango

本主题包含算法的基本问题,可以帮助 GATE CS 准备。因此,如果您正在为 GATE 做准备,建议您解决这些问题中的每一个。

问题 1:下列哪一项正确地确定了下面给出的递推关系的解,其中 T(1) = 1 ?

T(n)= 2T(n/4) + n1/2 

(A) O(n 2 )
(B) O(n)
(C) O(n 1/2 log n)
(D) O(log n)

解释:
根据大师定理,

T(n)= 2T(n/4) + n1/2 

应用大师定理,
这里,

a = 2, b = 4, K = 1/2, and p = 0 

So, bK = 41/2 = 2 
Thus, a = bK and (p > -1) 

所以,公式是,

T(n)= O(nlogba log(P+1)n)

所以,

T(n) = O(nlog 42 log(0 + 1)n) = O(n1/2 log n)

所以,选项(C)是正确的。

Ques-2:用于将两个大小为 p 和 q 的未排序列表合并为大小为 (p + q) 的排序列表。比较次数的时间复杂度为:

(A) O(log p + log q)
(B) O(p log p) + q log q)
(C) O(p + q)
(D)

解释:
对于单独排序大小为 p 的数组需要 O(p log p) 并且大小为 q 的数组需要 O(q log q) 时间,然后合并将需要 O(m + n) 时间。
因此,比较总数

= O(p log p) + O(q log q) + p + q
= O(p log p) + O(q log q) 

所以,选项(B)是正确的。

问题 3:以下哪种排序算法在使用数组数据结构时具有最高的最佳情况时间复杂度?

(一)堆排序
(B)插入排序
(C)冒泡排序
(D)选择排序

解释:
堆排序的最佳时间复杂度为 O(n log n)
插入排序的最佳时间复杂度为 O(n)
冒泡排序的最佳时间复杂度为 O(n)
选择排序的最佳情况时间复杂度为 O(n 2 )。
所以,选项(D)是正确的。

问题 4:以下哪个输入给出了选择排序的最佳案例时间?

(A) 1 2 3 4 5 6 7 8 9
(B) 2 3 1 5 9 7 8 6
(C) 9 8 7 6 5 4 3 2 1
(D)以上所有的时间都是一样的。

解释:
最坏情况和最好情况下的选择排序需要相同的时间。
所以,选项(D)是正确的。

问题 5:下面给出的递归函数的时间复杂度是多少:

T(n)= 4T(n/2) + n2 

(A) O(n 2 )
(B) O(n)
(C) O(n 2 log n)
(D) O(n log n)

解释:
根据大师定理,
这里,

a = 4, b = 2, k = 2, p = 0 

So, bk = 4 i.e., a = bk 

因此,公式为

T(n) = O(nlog ba log(P+1)n)

So, T(n)= O(nlog 24 log(0 + 1)n) = O(n2 log n)

所以,选项(C)是正确的。