Algorithms | Analysis of Algorithms | Question 8

What is the time complexity of the below function?

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


(A) O(n)
(B) O(n^2)
(C) O(nlogn)
(D) O(n(logn)^2)


Answer: (A)

Explanation: In the first look, the time complexity seems to be O(n^2) 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 question and the below function:

filter_none

edit
close

play_arrow

link
brightness_4
code

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++;
    }
}

chevron_right




My Personal Notes arrow_drop_up