Open In App
Related Articles

Algorithms | Analysis of Algorithms | Question 8

Improve Article
Improve
Save Article
Save
Like Article
Like

What is the time complexity of the below function? 

C




void fun(int n, int arr[])
{
    int i = 0, j = 0;
    for (; i < n; ++i)
        while (j < n && arr[i] < arr[j])
            j++;
}

(A)

O(n)

(B)

O(n2)

(C)

O(n*log(n))

(D)

O(n*log(n)2)


Answer: (A)

Explanation:

At first look, the time complexity seems to be O(n2) due to two loops. But, please note that the variable j is not initialized for each value of variable i. So, the inner loop runs at most n times. Please observe the difference between the function given in the question and the below function: 

C




void fun(int n, int arr[])
{
    int i = 0, j = 0;
    for (; i < n; ++i) {
        j = 0;
        while (j < n && arr[i] < arr[j])
            j++;
    }
}


Quiz of this Question
Please comment below if you find anything wrong in the above post

Last Updated : 12 Feb, 2013
Like Article
Save Article
Similar Reads