Merging elements of two different arrays alternatively in third array

07 May, 2021
Given two arrays arr1[] and arr2[], we need to combine two arrays in such a way that the combined array has alternate elements of both. If one array has extra element, then these elements are appended at the end of the combined array. 
Input : arr1[] = {1, 2, 3, 4, 5, 6}
        arr2[] = {11, 22, 33, 44}
Output: {1, 11, 2, 22, 3, 33, 4, 44, 5, 6}

Input : arr1[] = {1, 2, 3, 4, 5, 6, 7, 8}
        arr2[] = {11, 22, 33, 44}
Output: {1, 11, 2, 22, 3, 33, 4, 44, 5, 6, 7, 8}
 
We traverse both given arrays and one by one put their elements into combined array. After one of the arrays is exhausted, we put remaining elements of other array.  
C++
Java
Python3
C#
PHP
Javascript
// C++ program to merge two sorted arrays/#include<iostream>using namespace std; // Alternatively merge arr1[0..n1-1] and arr2[0..n2-1]// into arr3[0..n1+n2-1]void alternateMerge(int arr1[], int arr2[], int n1,                    int n2, int arr3[]){    int i = 0, j = 0, k = 0;     // Traverse both array    while (i<n1 && j <n2)    {        arr3[k++] = arr1[i++];        arr3[k++] = arr2[j++];    }     // Store remaining elements of first array    while (i < n1)        arr3[k++] = arr1[i++];     // Store remaining elements of second array    while (j < n2)        arr3[k++] = arr2[j++];} // Driver codeint main(){    int arr1[] = {1, 3, 5, 7, 9, 11};    int n1 = sizeof(arr1) / sizeof(arr1[0]);     int arr2[] = {2, 4, 6, 8};    int n2 = sizeof(arr2) / sizeof(arr2[0]);     int arr3[n1+n2];    alternateMerge(arr1, arr2, n1, n2, arr3);     cout << "Array after merging" <<endl;    for (int i=0; i < n1+n2; i++)        cout << arr3[i] << " ";     return 0;}
// Java program to merge two sorted arraysimport java.io.*; class GFG {         // Alternatively merge arr1[0..n1-1] and    // arr2[0..n2-1] into arr3[0..n1+n2-1]    static void alternateMerge(int arr1[], int arr2[],                               int n1, int n2, int arr3[])    {        int i = 0, j = 0, k = 0;             // Traverse both array        while (i < n1 && j < n2)        {            arr3[k++] = arr1[i++];            arr3[k++] = arr2[j++];        }             // Store remaining elements of first array        while (i < n1)            arr3[k++] = arr1[i++];             // Store remaining elements of second array        while (j < n2)            arr3[k++] = arr2[j++];    }         // Driver code    public static void main(String args[])    {        int arr1[] = {1, 3, 5, 7, 9, 11};        int n1 = arr1.length;             int arr2[] = {2, 4, 6, 8};        int n2 = arr2.length;             int arr3[] = new int[n1+n2];        alternateMerge(arr1, arr2, n1, n2, arr3);             System.out.println("Array after merging");        for (int i = 0; i < n1 + n2; i++)            System.out.print( arr3[i] + " ");    }} // This code is contributed// by Nikita Tiwari.
# Python3 program to merge two sorted arrays/ # Alternatively merge arr1[0..n1-1] and# arr2[0..n2-1] into arr3[0..n1 + n2-1]def alternateMerge(arr1, arr2, n1, n2, arr3) :    i = 0; j = 0; k = 0     # Traverse both array    while (i < n1 and j < n2) :        arr3[k] = arr1[i]        i += 1        k += 1                 arr3[k] = arr2[j]        j += 1        k += 1          # Store remaining elements of first array    while (i < n1) :        arr3[k] = arr1[i]        i += 1        k += 1     # Store remaining elements of second array    while (j < n2) :        arr3[k] = arr2[j]        k += 1        j += 1                  # Driver codearr1 = [1, 3, 5, 7, 9, 11]n1 = len(arr1) arr2 = [2, 4, 6, 8]n2 = len(arr2) arr3= [0] *(n1 + n2)alternateMerge(arr1, arr2, n1, n2, arr3) print("Array after merging")for i in range(0, (n1 + n2)) :    print(arr3[i] , end = " ") # This code is contributed by Nikita Tiwari.
// C# program to merge two sorted arraysusing System; class GFG {         // Alternatively merge arr1[0..n1-1]    // and arr2[0..n2-1] into arr3[0..n1+n2-1]    static void alternateMerge(int []arr1, int []arr2,                           int n1, int n2, int []arr3)    {        int i = 0, j = 0, k = 0;             // Traverse both array        while (i < n1 && j < n2)        {            arr3[k++] = arr1[i++];            arr3[k++] = arr2[j++];        }             // Store remaining elements of first array        while (i < n1)            arr3[k++] = arr1[i++];             // Store remaining elements of second array        while (j < n2)            arr3[k++] = arr2[j++];    }         // Driver code    public static void Main()    {        int []arr1 = new int[]{1, 3, 5, 7, 9, 11};        int n1 = arr1.Length;         int []arr2 = new int[]{2, 4, 6, 8};        int n2 = arr2.Length;         int []arr3= new int[n1 + n2];        alternateMerge(arr1, arr2, n1, n2, arr3);         Console.WriteLine("Array after merging");        for (int i = 0; i < n1+n2; i++)            Console.Write(arr3[i] + " ");    }} // This code is contributed by Sam007.
<?php// PHP program to merge two// sorted arrays // Alternatively merge arr1[0..n1-1]// and arr2[0..n2-1] into// arr3[0..n1+n2-1]function alternateMerge($arr1, $arr2,                        $n1, $n2){    $i = 0;    $j = 0;    $k = 0;    $arr3 = array();         // Traverse both array    while ($i < $n1 && $j < $n2)    {        $arr3[$k++] = $arr1[$i++];        $arr3[$k++] = $arr2[$j++];    }     // Store remaining elements    // of first array    while ($i < $n1)        $arr3[$k++] = $arr1[$i++];     // Store remaining elements    // of second array    while($j < $n2)        $arr3[$k++] = $arr2[$j++];             echo "Array after merging"."\n";    for ($i = 0; $i < ($n1 + $n2); $i++)        echo $arr3[$i] ." "; }     // Driver Code    $arr1 = array(1, 3, 5, 7, 9, 11);    $n1 = count($arr1);     $arr2 = array(2, 4, 6, 8);    $n2 = count($arr2);    alternateMerge($arr1, $arr2, $n1, $n2); // This code is contributed by Sam007?>
<script> // Javascript program to merge two sorted arrays/ // Alternatively merge arr1[0..n1-1] and arr2[0..n2-1]// into arr3[0..n1+n2-1]function alternateMerge(arr1, arr2, n1,                    n2, arr3){    let i = 0, j = 0, k = 0;     // Traverse both array    while (i<n1 && j <n2)    {        arr3[k++] = arr1[i++];        arr3[k++] = arr2[j++];    }     // Store remaining elements of first array    while (i < n1)        arr3[k++] = arr1[i++];     // Store remaining elements of second array    while (j < n2)        arr3[k++] = arr2[j++];} // Driver code     let arr1 = [1, 3, 5, 7, 9, 11];    let n1 = arr1.length;     let arr2 = [2, 4, 6, 8];    let n2 = arr2.length;     let arr3 = new Array(n1+n2);    alternateMerge(arr1, arr2, n1, n2, arr3);     document.write("Array after merging" + "<br>");    for (let i=0; i < n1+n2; i++)        document.write(arr3[i] + " "); // This code is contributed by Mayank Tyagi </script>
Output:  
Array after merging
1 2 3 4 5 6 7 8 9 11 
Time Complexity : O(n1 + n2) 
Sam007
mayanktyagi1709
Arrays
Arrays
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Count of subarrays with average K
Introduction to Data Structures
Window Sliding Technique
Find subarray with given sum | Set 1 (Nonnegative Numbers)
Next Greater Element
What is Data Structure: Types, Classifications and Applications
Merge Overlapping Intervals
Count of longest possible subarrays with sum not divisible by K
Find a triplet that sum to a given value
Remove duplicates from sorted array