Open In App

Algorithms | Analysis of Algorithms | Question 8

What is the time complexity of the below function? 




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: 




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

Article Tags :