在C ++中,将两个不同数组的元素交替合并在第三数组中。

问题陈述

给定两个数组,我们需要以使合并后的数组具有第一个数组和第二个数组的备用元素的方式组合两个数组。如果其中一个数组有一个额外的元素,则这些元素应附加在组合数组的末尾。

arr1[] = {10, 20, 30, 40}
arr2[] = {-10, -20, -30, -40}
result[] = {10, -10, 20, -20, 30, -30, 40, -40}

算法

1. Traverse both arrays and one by one put elements into result array.
2. If one of the array exhausts then put remaining elements of other array into result array.

示例

#include <iostream>
#define SIZE(arr) (sizeof(arr) / sizeof(arr[0]))
using namespace std;
void alternateMergedArray(int *arr1, int n1, int *arr2, int n2,int *result){
   int i, j, k;
   i = 0;
   j = 0;
   k = 0;
   while (i < n1 && j < n2) {
      result[k] = arr1[i];
      ++k;
      ++i;
      result[k] = arr2[j];
      ++k;
      ++j;
   }
   while (i < n1) {
      result[k] = arr1[i];
      ++k;
      ++i;
   }
   while (j < n2) {
      result[k] = arr2[j];
      ++k;
      ++j;
   }
}
void displayArray(int *arr, int n){
   for (int i = 0; i < n; ++i) {
      cout << arr[i] << " ";
   }
   cout << endl;
}
int main(){
   int arr1[] = {10, 20, 30, 40};
   int arr2[] = {-10, -20, -30, -40};
   int result[SIZE(arr1) + SIZE(arr2)];
   cout << "First array: " << endl;
   displayArray(arr1, SIZE(arr1));
   cout << "Second array: " << endl;
   displayArray(arr2, SIZE(arr2));
   cout << "Result array: " << endl;
   alternateMergedArray(arr1, SIZE(arr1), arr2, SIZE(arr2),result);
   displayArray(result, SIZE(result));
   return 0;
}

输出结果

当您编译并执行上述程序时。它生成以下输出-

First array:
10 20 30 40
Second array:
-10 -20 -30 -40
Result array:
10 -10 20 -20 30 -30 40 -40