Consider the following C-function in which a[n] and b[m] are two sorted integer arrays and c[n + m] be another integer array.

void xyz(int a[], int b [], int c[]) { int i, j, k; i = j = k = O; while ((i<n) && (j<m)) if (a[i] < b[j]) c[k++] = a[i++]; else c[k++] = b[j++]; }

Which of the following condition(s) hold(s) after the termination of the while loop? (GATE CS 2006)

(i) j < m, k = n+j-1, and a[n-1] < b[j] if i = n

(ii) i < n, k = m+i-1, and b[m-1] <= a[i] if j = m

**(A)** only (i)

**(B)** only (ii)

**(C)** either (i) or (ii) but not both

**(D)** neither (i) nor (ii)

**Answer:** **(C)** **Explanation:** The function xyz() is similar to merge() of mergeSort().

The condition (i) is true if the last inserted element in c[] is from a[] and condition (ii) is true if the last inserted element is from b[].

Quiz of this Question