用C++顺序表合并两个有序数组
时间: 2024-09-28 13:11:02 浏览: 30
在C++中,合并两个已经排序的数组可以使用双指针法,即创建一个新的顺序表(也称为动态数组),然后逐个比较两个输入数组的元素,将较小的那个添加到新列表中,直到其中一个数组遍历完。如果还有剩余的元素,则将其余部分直接添加到新列表的末尾。以下是简单的步骤:
```cpp
#include <iostream>
#include <vector>
// 动态数组模板函数用于合并两个有序数组
template<typename T>
void mergeSortedArrays(std::vector<T>& arr1, std::vector<T>& arr2, std::vector<T>& result) {
int i = 0, j = 0, k = 0;
// 遍历两个数组
while (i < arr1.size() && j < arr2.size()) {
if (arr1[i] <= arr2[j]) {
result[k++] = arr1[i++];
} else {
result[k++] = arr2[j++];
}
}
// 将未遍历完的数组元素添加到结果
while (i < arr1.size()) {
result[k++] = arr1[i++];
}
while (j < arr2.size()) {
result[k++] = arr2[j++];
}
}
int main() {
std::vector<int> array1 = {1, 3, 5};
std::vector<int> array2 = {2, 4, 6};
std::vector<int> mergedArray;
mergeSortedArrays(array1, array2, mergedArray);
for (const auto& num : mergedArray) {
std::cout << num << " ";
}
std::cout << std::endl; // 输出:1 2 3 4 5 6
return 0;
}
```
阅读全文