输入两个从小到大排好顺序的的数组,合并成一个数组并保持从小到大的排列c++代码
时间: 2024-10-18 20:10:22 浏览: 26
在 C++ 中,可以使用双指针法来合并两个已排序的数组。这里是一个简单的示例:
```cpp
#include <iostream>
using namespace std;
void mergeArrays(int arr1[], int m, int arr2[], int n) {
int i = 0, j = 0, k = 0; // 双指针i和j分别遍历arr1和arr2,k用于结果数组
while (i < m && j < n) { // 当两个数组都还有元素
if (arr1[i] <= arr2[j]) {
arr[k++] = arr1[i]; // 将较小的元素放入结果数组
i++;
} else {
arr[k++] = arr2[j]; // 否则,将较大的元素放入结果数组
j++;
}
}
// 如果其中一个数组有剩余,将另一个数组的所有剩余元素添加到结果数组
while (i < m) {
arr[k++] = arr1[i];
i++;
}
while (j < n) {
arr[k++] = arr2[j];
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 mergedArray[arr1.length + arr2.length];
mergeArrays(arr1, m, arr2, n);
for (int i = 0; i < m + n; i++) {
cout << mergedArray[i] << " ";
}
return 0;
}
```
这个程序首先定义了两个指针 `i` 和 `j` 分别遍历 `arr1` 和 `arr2`,然后比较当前元素,将较小的元素存入 `mergedArray` 并移动对应的指针。最后,如果有一个数组有剩余,就直接将其剩余部分添加到 `mergedArray`。
阅读全文