GATE | GATE CS 2013 | Question 31

Consider the following function:

filter_none

edit
close

play_arrow

link
brightness_4
code

int unknown(int n) {
    int i, j, k = 0;
    for (i  = n/2; i <= n; i++)
        for (j = 2; j <= n; j = j * 2)
            k = k + n/2;
    return k;
 }

chevron_right


(A)

\Theta(n^2)

(B)

\Theta(n^2Logn)

(C)

\Theta(n^3)

(D)

\Theta(n^3Logn)

(A) A
(B) B
(C) C
(D) D


Answer: (B)

Explanation:  

 
Here we have to tell the value of k returned not the time complexity.

for (i  = n/2; i <= n; i++)
        for (j = 2; j <= n; j = j * 2)
            k = k + n/2;
    return k;

The outer loop runs n/2 times
The inner loop runs logn times.(2^k = n => k = logn).
Now looking at the value of k in inner loop, n is added to k, logn times as the inner loop is running logn times.
Therefore the value of k after running the inner loop one time is n*logn.
Therefore total time complexity is inner multiplied with outer loop complexity which (n for outer and nlogn for inner) n^2logn.

See http://geeksquiz.com/algorithms-analysis-of-algorithms-question-5/

This solution is contributed by Parul Sharma.

Quiz of this Question



My Personal Notes arrow_drop_up


Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.