</>

Technology

Java Programs

Difficulty

Intermediate

Interview Question

Write a Java program to merge two sorted arrays into a single sorted array.

Answer

Merge Two Sorted Arrays

Method 1: Two-Pointer Technique (Efficient)

Java
import java.util.Arrays;

public class MergeSortedArrays {
    public static void main(String[] args) {
        int[] arr1 = { 1, 3, 5, 7, 9 };
        int[] arr2 = { 2, 4, 6, 8, 10 };

        int m = arr1.length, n = arr2.length;
        int[] merged = new int[m + n];

        int i = 0, j = 0, k = 0;

        // Compare elements from both arrays, copy smaller
        while (i < m && j < n) {
            if (arr1[i] <= arr2[j]) {
                merged[k++] = arr1[i++];
            } else {
                merged[k++] = arr2[j++];
            }
        }

        // Copy remaining elements from arr1 (if any)
        while (i < m) merged[k++] = arr1[i++];

        // Copy remaining elements from arr2 (if any)
        while (j < n) merged[k++] = arr2[j++];

        System.out.println("Array 1: " + Arrays.toString(arr1));
        System.out.println("Array 2: " + Arrays.toString(arr2));
        System.out.println("Merged:  " + Arrays.toString(merged));
    }
}

Output

CODE
Array 1: [1, 3, 5, 7, 9]
Array 2: [2, 4, 6, 8, 10]
Merged:  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

How Two-Pointer Works

CODE
arr1: [1, 3, 5, 7, 9]   i=0
arr2: [2, 4, 6, 8, 10]  j=0

Step 1: arr1[0]=1 < arr2[0]=2 → copy 1, i=1  → merged=[1]
Step 2: arr1[1]=3 > arr2[0]=2 → copy 2, j=1  → merged=[1,2]
Step 3: arr1[1]=3 < arr2[1]=4 → copy 3, i=2  → merged=[1,2,3]
...and so on

Method 2: Simple — Combine and Sort

Java
int[] arr1 = { 1, 3, 5 };
int[] arr2 = { 2, 4, 6, 8 };

int[] merged = new int[arr1.length + arr2.length];
System.arraycopy(arr1, 0, merged, 0, arr1.length);
System.arraycopy(arr2, 0, merged, arr1.length, arr2.length);
Arrays.sort(merged);

System.out.println(Arrays.toString(merged));
// → [1, 2, 3, 4, 5, 6, 8]

Method 3: Using Streams (Java 8+)

Java
int[] arr1 = { 1, 3, 5, 7 };
int[] arr2 = { 2, 4, 6, 8 };

int[] merged = IntStream.concat(
    IntStream.of(arr1),
    IntStream.of(arr2)
).sorted().toArray();

System.out.println(Arrays.toString(merged));
// → [1, 2, 3, 4, 5, 6, 7, 8]

Find Intersection of Two Arrays

Java
int[] arr1 = { 1, 2, 3, 4, 5 };
int[] arr2 = { 3, 4, 5, 6, 7 };

Set<Integer> set = new HashSet<>();
for (int n : arr1) set.add(n);

List<Integer> intersection = new ArrayList<>();
for (int n : arr2) {
    if (set.contains(n)) intersection.add(n);
}
System.out.println("Intersection: " + intersection);  // [3, 4, 5]

Follow AutomateQA