c++合并两个有序数组
时间: 2024-09-15 14:04:13 浏览: 49
C++实现两个有序数组的合并
5星 · 资源好评率100%
在 C++ 中,合并两个已排序的数组可以采用多种算法实现,常见的有归并排序的思想。这里提供一种简单的迭代法示例:
```cpp
#include <iostream>
using namespace std;
void merge(int arr1[], int m, int arr2[], int n) {
int i = 0, j = 0, k = 0;
while (i < m && j < n) {
if (arr1[i] <= arr2[j]) {
arr[k++] = arr1[i++];
} else {
arr[k++] = arr2[j++];
}
}
// 如果第一个数组还有剩余元素
while (i < m) {
arr[k++] = arr1[i++];
}
// 如果第二个数组还有剩余元素
while (j < n) {
arr[k++] = arr2[j++];
}
}
int main() {
int arr1[] = {1, 3, 5};
int m = sizeof(arr1) / sizeof(arr1[0]);
int arr2[] = {2, 4, 6};
int n = sizeof(arr2) / sizeof(arr2[0]);
int merged_arr[arr1.length + arr2.length];
merge(arr1, m, arr2, n, merged_arr);
cout << "Merged array is: ";
for (int i = 0; i < m + n; i++) {
cout << merged_arr[i] << " ";
}
return 0;
}
```
在这个例子中,`merge`函数接受两个已排序数组、各自的长度以及一个用于存放结果的新数组。它通过比较两个数组的元素并将较小的添加到结果数组,直到其中一个数组遍历完。然后,将另一个数组剩余的部分直接复制到结果数组。
阅读全文