Behrooz Karjoo Behrooz Karjoo - 4 months ago 11
Java Question

How to merge two sorted arrays into a sorted array?

This was asked of me in an interview and this is the solution I provided:

public static int[] merge(int[] a, int[] b) {

int[] answer = new int[a.length + b.length];
int i = 0, j = 0, k = 0;
while (i < a.length && j < b.length)
{
if (a[i] < b[j])
{
answer[k] = a[i];
i++;
}
else
{
answer[k] = b[j];
j++;
}
k++;
}

while (i < a.length)
{
answer[k] = a[i];
i++;
k++;
}

while (j < b.length)
{
answer[k] = b[j];
j++;
k++;
}

return answer;
}


Is there a more efficient way to do this?

Edit: Corrected length methods.

Answer

A minor improvement, but after the main loop, you could use System.arraycopy to copy the tail of either input array when you get to the end of the other. That won't change the O(n) performance characteristics of your solution, though.