ข้อความโจทย์
กำหนดอาร์เรย์สองอาร์เรย์ เราต้องรวมอาร์เรย์ทั้งสองอย่างที่อาร์เรย์ที่รวมแล้วมีสมาชิกสลับกันของอาร์เรย์แรกและอาร์เรย์ที่สอง หากอาร์เรย์ใดอาร์เรย์หนึ่งมีสมาชิกเหลือ ให้ต่อท้ายที่อาร์เรย์ที่รวมแล้ว
arr1[] = {10, 20, 30, 40}
arr2[] = {-10, -20, -30, -40}
result[] = {10, -10, 20, -20, 30, -30, 40, -40}
อัลกอริทึม
1. ท่องผ่านทั้งสองอาร์เรย์ และนำสมาชิกทีละตัวใส่ในอาร์เรย์ผลลัพธ์ 2. หากอาร์เรย์ใดอาร์เรย์หนึ่งหมด ให้นำสมาชิกที่เหลือของอีกอาร์เรย์ใส่ในอาร์เรย์ผลลัพธ์
ตัวอย่างโค้ด
#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