Open In App

Algorithms | Analysis of Algorithms | Question 8

Like Article
Like
Save
Share
Report

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
Previous
Next
Share your thoughts in the comments
Similar Reads