in Algorithms recategorized by
47,636 views
35 votes
35 votes

For merging two sorted lists of sizes $m$ and $n$ into a sorted list of size $m+n$, we require comparisons of

  1. $O(m)$

  2. $O(n)$

  3. $O(m+n)$

  4. $O(\log m + \log n)$

in Algorithms recategorized by
47.6k views

6 Answers

56 votes
56 votes
Best answer

Answer: Option C.

The number of moves are however always $m+n$ so that we can term it as $\Theta(m+n)$. But the number of comparisons varies as per the input. In the best case, the comparisons are $\text{min}(m,n)$ and in worst case they are $m+n-1$.

edited by

4 Comments

ohh.. ok sir. Thnx :)
1
1
If we place a sentinel($\infty$) at the end of both lists, then comparisons will also be of order $\Theta(m + n)$
1
1
Example for best case :

arr1 = 10 20 50 70

arr2 = 2 5 7

mini(4,3) = 3
0
0
17 votes
17 votes
A : 10  20  30  90

B. : 40  50  60  70

Suppose A.length =m ,B.length=n


Here m+n-1 comparisons are required
So O(m+n)//this is one of  the worst case comparison

2 Comments

Thanks for the example
0
0
If we think there is an $\infty$ at the last of every array then there will be m+n comparison,one extra for last element as it have to compare with $\infty$
1
1
9 votes
9 votes

If there are 2 arrays like this

A: 10   20    60   90

B:  30   50    70  100

And store the resultent array in C[ ]

while((a[]!=NULL) && (b[]!=NULL))
{
if((a[i]<b[j])||(b[j]==NULL))
{
    c[k++]=a[i++];
}
else
{
    c[k++]=b[j++];
}
}
8 votes
8 votes
@srestha, kindly notice that in question its written two sorted list, not array.

in this case,
best case:- all elements of 2nd list is greater than that of 1st list then minimum comparison is Min(m,n) as it will take only one iteration.for comparison rest will be inserted as it is.
and worst case:- let 2 sorted list be 1,2,3,4 and 1,2,3,4 so here total comparison for merging should be =7(last element need not be compared) so total comparison= m+n-1= O(m+n).
by

2 Comments

How are you knowing that you have reached the last element of one of the sorted lists? Doesn't that require another comparison?
0
0
See srestha mam's code above, try doing a dry run through the code with the two sorted lists. The elements are compared and inserted in this order : B[0],A[0],B[1]... so like this B will be the first list to be finish and it will break out of the loop. The no. of comparisons done till here would be m+n-1. Lastly A's last element would be inserted.
0
0
Answer:

Related questions