📅  最后修改于: 2023-12-03 15:22:57.489000             🧑  作者: Mango
本文将介绍合并三个有序数组的 C++ 程序。合并有序数组是一项十分常见的任务,尤其在排序算法中。
在开始学习本文内容前,你需要掌握以下基础知识:
首先,我们需要定义三个有序数组,可以使用以下方法:
int arr1[] = {1, 4, 6, 8};
int arr2[] = {2, 3, 7, 9};
int arr3[] = {5, 10, 11, 12};
然后,我们需要定义一个新数组,用于存放三个有序数组的元素。由于三个数组的长度相等,因此我们可以使用以下方法:
const int size = sizeof(arr1) / sizeof(int);
int newArr[size * 3];
接下来,我们需要合并三个数组。我们可以使用三个变量分别表示三个数组的当前索引位置,然后比较三个数组当前索引位置的元素大小,将最小的元素加入新数组中,并将对应数组的索引加一。循环执行以上步骤,直到三个数组中所有元素都已被全部放入新数组中。代码实现如下:
int i = 0, j = 0, k = 0;
for (int l = 0; l < size * 3; l++) {
if (i >= size) {
newArr[l] = arr2[j++];
} else if (j >= size) {
newArr[l] = arr1[i++];
} else if (k >= size) {
newArr[l] = arr3[k++];
} else {
if (arr1[i] <= arr2[j] && arr1[i] <= arr3[k]) {
newArr[l] = arr1[i++];
} else if (arr2[j] <= arr1[i] && arr2[j] <= arr3[k]) {
newArr[l] = arr2[j++];
} else {
newArr[l] = arr3[k++];
}
}
}
最后,我们可以输出新数组的元素,以验证合并是否正确:
for (int i = 0; i < size * 3; i++) {
cout << newArr[i] << " ";
}
完整的程序代码如下:
#include <iostream>
using namespace std;
int main() {
int arr1[] = {1, 4, 6, 8};
int arr2[] = {2, 3, 7, 9};
int arr3[] = {5, 10, 11, 12};
const int size = sizeof(arr1) / sizeof(int);
int newArr[size * 3];
int i = 0, j = 0, k = 0;
for (int l = 0; l < size * 3; l++) {
if (i >= size) {
newArr[l] = arr2[j++];
} else if (j >= size) {
newArr[l] = arr1[i++];
} else if (k >= size) {
newArr[l] = arr3[k++];
} else {
if (arr1[i] <= arr2[j] && arr1[i] <= arr3[k]) {
newArr[l] = arr1[i++];
} else if (arr2[j] <= arr1[i] && arr2[j] <= arr3[k]) {
newArr[l] = arr2[j++];
} else {
newArr[l] = arr3[k++];
}
}
}
for (int i = 0; i < size * 3; i++) {
cout << newArr[i] << " ";
}
return 0;
}
在本文中,我们介绍了合并三个有序数组的 C++ 程序实现方法,并通过代码实现进行了验证。希望能对您有所帮助!