📜  在第三个数组中交替合并两个不同数组的元素

📅  最后修改于: 2022-05-13 01:57:50.338000             🧑  作者: Mango

在第三个数组中交替合并两个不同数组的元素

给定两个数组 arr1[] 和 arr2[],我们需要组合两个数组,使得组合后的数组具有两个交替的元素。如果一个数组有额外的元素,那么这些元素将附加到组合数组的末尾。

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}

我们遍历两个给定的数组,并将它们的元素一一放入组合数组中。在其中一个数组用完后,我们放入另一个数组的剩余元素。

C++
// C++ program to merge two sorted arrays/
#include
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


Java
// Java program to merge two sorted arrays
import 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
# 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 code
arr1 = [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#
// C# program to merge two sorted arrays
using 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


Javascript


输出:

Array after merging
1 2 3 4 5 6 7 8 9 11 

时间复杂度:O(n1 + n2)