📜  合并 3 个有序数组的 C++ 程序(1)

📅  最后修改于: 2023-12-03 15:22:57.489000             🧑  作者: Mango

合并 3 个有序数组的 C++ 程序

本文将介绍合并三个有序数组的 C++ 程序。合并有序数组是一项十分常见的任务,尤其在排序算法中。

前置知识

在开始学习本文内容前,你需要掌握以下基础知识:

  • 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++ 程序实现方法,并通过代码实现进行了验证。希望能对您有所帮助!