PTA:7-2 线性表的两个非递减集合求并集

线性表的两个非递减集合求并集

题目

在这里插入图片描述

输入样例

5
1 2 3 4 5
6
7 8 9 10 11 12

输出样例

1 2 3 4 5 
7 8 9 10 11 12 
1 2 3 4 5 7 8 9 10 11 12 

代码

#include<iostream>
using namespace std;

void inputArray(int* arr, int n) {
    
    
    for (int i = 0; i < n; i++) {
    
    
        cin >> arr[i];
        if (i > 0 && arr[i - 1] > arr[i]) {
    
    
            cout << "Wrong sequence, try again" << endl;
            i--;
        }
    }
}

void mergeArrays(int* a, int n1, int* b, int n2, int* c) {
    
    
    int i = 0, j = 0, k = 0;
    while (i < n1 && j < n2) {
    
    
        if (a[i] < b[j]) {
    
    
            c[k] = a[i];
            i++;
        }
        else {
    
    
            c[k] = b[j];
            j++;
        }
        k++;
    }
    while (i < n1) {
    
    
        c[k] = a[i];
        i++;
        k++;
    }
    while (j < n2) {
    
    
        c[k] = b[j];
        j++;
        k++;
    }
}

int main() 
{
    
    
    int n1, n2;
    cin >> n1;
    int* a = new int[n1];
  // 输入第一个数组
    inputArray(a, n1);

    cin >> n2;
    int* b = new int[n2];
    // 输入第二个数组
    inputArray(b, n2);

    int len = n1 + n2;
    int* c = new int[len];

    // 合并两个数组
    mergeArrays(a, n1, b, n2, c);

    // 输出三个数组
    for (int i = 0; i < n1; i++) {
    
    
        cout << a[i] << " ";
    }
    cout << endl;
    for (int i = 0; i < n2; i++) {
    
    
        cout << b[i] << " ";
    }
    cout << endl;
    for (int m = 0; m < len; m++) {
    
    
        cout << c[m] << " ";
    }


    delete[] a;
    delete[] b;
    delete[] c;

    return 0;
}

① 函数inputArray()用于输入数组并检查
② 函数mergeArrays用于合并两个有序数组
③ 别忘了释放动态分配的内存

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_74195626/article/details/132943124