提供一个C++程序,展示如何有效地合并两个已排序数组成一个新的已排序数组?
时间: 2024-11-09 14:27:54 浏览: 7
在C++中,可以使用归并排序的思想有效地合并两个已排序的数组。下面是一个简单的示例程序,它定义了一个`mergeArrays`函数来合并两个数组:
```cpp
#include <iostream>
#include <vector>
// 辅助函数,用于合并两个部分已经排好序的数组
void merge(std::vector<int>& arr1, std::vector<int>& arr2, int& i, int& j, std::vector<int>& result) {
while (i < arr1.size() && j < arr2.size()) {
if (arr1[i] <= arr2[j]) {
result.push_back(arr1[i++]);
} else {
result.push_back(arr2[j++]);
}
}
// 把剩余元素添加到结果数组中
while (i < arr1.size()) {
result.push_back(arr1[i++]);
}
while (j < arr2.size()) {
result.push_back(arr2[j++]);
}
}
// 合并两个已排序数组
std::vector<int> mergeArrays(const std::vector<int>& arr1, const std::vector<int>& arr2) {
std::vector<int> result;
merge(arr1, arr2, 0, 0, result);
return result;
}
int main() {
std::vector<int> a = {1, 3, 5};
std::vector<int> b = {2, 4, 6};
std::vector<int> mergedArray = mergeArrays(a, b);
std::cout << "Merged array: ";
for (const auto &num : mergedArray) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
在这个程序中,`main`函数首先创建了两个已排序的数组`a`和`b`,然后通过调用`mergeArrays`函数将它们合并。合并过程中,我们不断地比较两个数组的当前元素,并将较小的元素添加到结果数组中,直到其中一个数组遍历完,再把另一个数组剩下的元素全部添加。
阅读全文