合并两个有序数组c++简单(不用vector)
时间: 2024-09-15 13:05:43 浏览: 48
合并两个有序数组在C++中的一种简单方法,可以利用双指针技巧,不需要使用`vector`容器。假设你有两个动态数组`arr1`和`arr2`,它们已经按照升序排列。下面是步骤:
```cpp
#include <iostream>
void mergeArrays(int* arr1, int size1, int* arr2, int size2, int* result) {
int i = 0, j = 0, k = 0; // 定义三个指针
while (i < size1 && j < size2) { // 当两个数组都未遍历完
if (arr1[i] <= arr2[j]) {
result[k++] = arr1[i++]; // 将较小元素放入结果数组
} else {
result[k++] = arr2[j++]; // 将较大元素放入结果数组
}
}
// 如果其中一个数组还有剩余元素,将剩余部分复制到结果数组
while (i < size1) {
result[k++] = arr1[i++];
}
while (j < size2) {
result[k++] = arr2[j++];
}
}
int main() {
int arr1[] = {1, 3, 5};
int size1 = sizeof(arr1) / sizeof(arr1[0]);
int arr2[] = {2, 4, 6};
int size2 = sizeof(arr2) / sizeof(arr2[0]);
int mergedArray[size1 + size2];
mergeArrays(arr1, size1, arr2, size2, mergedArray);
std::cout << "Merged array: ";
for (int num : mergedArray) {
std::cout << num << " ";
}
return 0;
}
```
在这个示例中,`mergeArrays`函数接受两个已排序数组的指针、各自大小以及一个用于存放结果的新数组指针。它通过比较两个数组中的当前元素,并将较小的元素添加到结果数组,直到其中一个数组遍历完毕,再将另一个数组的剩余元素依次添加。
阅读全文