Algorithms | Analysis of Algorithms | Question 8
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
Please Login to comment...