0% found this document useful (0 votes)
0 views

Practice Questions on Time Complexity Analysis

The document presents practice questions on time complexity analysis, providing code snippets and their corresponding time complexities. It explains the reasoning behind the complexities for various algorithms, such as O(N + M), O(N^2), and O(log N). Additionally, it discusses the concept of asymptotic efficiency in algorithms, indicating that one algorithm can be more efficient than another for larger inputs.

Uploaded by

datalogdigital
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
0 views

Practice Questions on Time Complexity Analysis

The document presents practice questions on time complexity analysis, providing code snippets and their corresponding time complexities. It explains the reasoning behind the complexities for various algorithms, such as O(N + M), O(N^2), and O(log N). Additionally, it discusses the concept of asymptotic efficiency in algorithms, indicating that one algorithm can be more efficient than another for larger inputs.

Uploaded by

datalogdigital
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

Practice Questions on Time Complexity Analysis

1. What is the time complexity of the following code:

int a = 0, b = 0;

for (i = 0; i < N; i++) {

a = a + Math.random();

for (j = 0; j < M; j++) {

b = b + Math.random();

Options:
1. O(N * M) time, O(1) space
2. O(N + M) time, O(N + M) space
3. O(N + M) time, O(1) space
4. O(N * M) time, O(N + M) space
Output:
3. O(N + M) time, O(1) space
Explanation: The first loop is O(N) and the second loop is O(M).
Since N and M are independent variables, so we can’t say which one is
the leading term. Therefore Time complexity of the given problem will
be O(N+M).
Since variables size does not depend on the size of the input,
therefore Space Complexity will be constant or O(1)

2. What is the time complexity of the following code:

int a = 0;

for (i = 0; i < N; i++) {

for (j = N; j > i; j--) {

a = a + i + j;

Options:
1. O(N)
2. O(N*log(N))
3. O(N * Sqrt(N))
4. O(N*N)
Output:
4. O(N*N)
Explanation:
The above code runs total no of times
= N + (N – 1) + (N – 2) + … 1 + 0
= N * (N + 1) / 2
= 1/2 * N^2 + 1/2 * N
O(N^2) times.

3. What is the time complexity of the following code:


Options:
1. O(n)
2. O(N log N)
3. O(n^2)
4. O(n^2Logn)
Output:
2. O(nLogn)
Explanation: If you notice, j keeps doubling till it is less than or equal to
n. Several times, we can double a number till it is less than n would be
log(n).
Let’s take the examples here.
for n = 16, j = 2, 4, 8, 16
for n = 32, j = 2, 4, 8, 16, 32
So, j would run for O(log n) steps.
i runs for n/2 steps.
So, total steps = O(n/ 2 * log (n)) = O(n*logn)
4. What does it mean when we say that an algorithm X is
asymptotically more efficient than Y?
Options:
1. X will always be a better choice for small inputs
2. X will always be a better choice for large inputs
3. Y will always be a better choice for small inputs
4. X will always be a better choice for all inputs
Output:
2. X will always be a better choice for large inputs
Explanation: In asymptotic analysis, we consider the growth of the
algorithm in terms of input size. An algorithm X is said to be asymptotically
better than Y if X takes smaller time than y for all input sizes n larger than
a value n0 where n0 > 0.
5. What is the time complexity of the following code:
int a = 0, i = N;
while (i > 0) {
a += i;
i /= 2;
}
Options:
1. O(N)
2. O(Sqrt(N))
3. O(N / 2)
4. O(log N)
Output:
4. O(log N)

Explanation: We have to find the smallest x such that ‘(N / 2^x )< 1
OR 2^x > N’
x = log(N)

You might also like