合并两个无序数组

合并两个无序数组

现在我有两个无序的数组(长度不相等),我现在想将两个数组合并

#include <iostream>
#include <vector>

using namespace std;

vector<int> mergeArrays(vector<int>& arr1, vector<int>& arr2) {
    vector<int> res;
    int i = 0, j = 0;//设置两个指针分别指向两个数组

    while (i < arr1.size() && j < arr2.size()) {//当两个指针都小于各自的数组长度时
        //将小的数不断添加到结果数组中
        if (arr1[i] < arr2[j]) {
            result.push_back(arr1[i]);
            i++;
        } else {
            result.push_back(arr2[j]);
            j++;
        }
    }
	//当一个数组遍历完成,剩下的另一个数组中的元素一定都是比目前结果数组中的元素大的
    //按顺序加入结果数组即可
    while (i < arr1.size()) {
        result.push_back(arr1[i]);
        i++;
    }

    while (j < arr2.size()) {
        result.push_back(arr2[j]);
        j++;
    }

    return res;
}

int main() {
    int n, m;
    cin >> n >> m; // 输入两个数组的长度

    vector<int> arr1(n);
    vector<int> arr2(m);

    for (int i = 0; i < n; i++) {
        cin >> arr1[i]; // 输入第一个数组的元素
    }

    for (int i = 0; i < m; i++) {
        cin >> arr2[i]; // 输入第二个数组的元素
    }

    vector<int> merged = mergeArrays(arr1, arr2);

    for (int num : merged) {
        cout << num << " ";
    }

    return 0;
}
posted @ 2023-09-26 12:41  dayceng  阅读(64)  评论(0编辑  收藏  举报