交替合并两个不同数组的元素在 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
广告