finding median of n elements (unsorted) takes O(n) time so for 2n elements also it will be O(n)

Dark Mode

2,409 views

24 votes

It takes $O(n)$ time to find the median in a list of $n$ elements, which are not necessarily in sorted order while it takes only $O(1)$ time to find the median in a list of $n$ sorted elements. How much time does it take to find the median of $2n$ elements which are given as two lists of $n$ sorted elements each?

- $O (1)$
- $O \left(\log n\right)$ but not $O (1)$
- $O (\sqrt{n})$ but not $O \left(\log n\right)$
- $O (n)$ but not $O (\sqrt{n})$
- $O \left(n \log n\right)$ but not $O (n)$

36 votes

Best answer

- Calculate the medians $m1$ and $m2$ of the input arrays $ar1[\ ]$ and $ar2[ \ ]$ respectively.
- If $m1$ and $m2$ both are equal,

return $m1$ (or $m2$) - If $m1$ is greater than $m2$, then median is present in one of the below two subarrays.

(a) From first element of $ar1$ to $m1$ $(ar1[0$ to $n/2])$

(b) From $m2$ to last element of $ar2$ $(ar2[n/2$ to $n-1])$ - If $m2$ is greater than $m1$, then median is present in one of the below two subarrays.

(a) From $m1$ to last element of $ar1$ $(ar1[n/2$ to $n-1])$

(b) From first element of $ar2$ to $m2$ $(ar2[0$ to $n/2])$ - Repeat the above process until size of both the subarrays becomes $2$.
- If size of the two arrays is $2$ then,

Median $= (\max(ar1[0], ar2[0]) + \min(ar1[1], ar2[1]))/2$

Time complexity $O(\log n)$

http://www.geeksforgeeks.org/median-of-two-sorted-arrays/

Correct Answer: $B$

0

0