合并两个有序数组c++
时间: 2023-06-03 21:05:43 浏览: 185
很高兴回答你的问题!合并两个有序数组c的方法是,先定义一个数组c,长度为两个有序数组a和b的长度之和。然后使用双指针,将a和b的元素依次比较,将小的元素放入c数组中,直到其中一个数组遍历完成,最后将另一个数组的剩余元素依次放入c数组中即可。这样可以保证c数组也是有序的。
相关问题
合并两个有序数组c++简单
合并两个有序数组在C++中可以使用双指针法,这是一种简洁而高效的解决方案。假设你有两个已排序的整数数组`arr1`和`arr2`,你可以创建一个新的空数组`result`,然后从两个数组的起始位置开始比较元素,将较小的那个添加到`result`并移动对应的指针。
以下是一个简单的示例代码:
```cpp
#include <vector>
std::vector<int> mergeSortedArrays(std::vector<int>& arr1, std::vector<int>& arr2) {
int i = 0; // arr1 的指针
int j = 0; // arr2 的指针
std::vector<int> result;
// 遍历两个数组,直到其中一个数组遍历完
while (i < arr1.size() && j < arr2.size()) {
if (arr1[i] <= arr2[j]) {
result.push_back(arr1[i]);
i++;
} else {
result.push_back(arr2[j]);
j++;
}
}
// 把剩余未加进结果的数组元素添加进去
while (i < arr1.size()) {
result.push_back(arr1[i]);
i++;
}
while (j < arr2.size()) {
result.push_back(arr2[j]);
j++;
}
return result;
}
```
在这个函数中,我们首先检查`arr1`和`arr2`的第一个元素,选择较小的一个添加到结果,并相应地移动指针。当其中一个数组遍历结束,我们将另一个数组剩余的部分直接复制到结果数组中。
合并两个有序数组c++简洁
合并两个有序数组是一个经典的编程问题,可以使用双指针法解决,这在 C++ 中非常直观。以下是合并两个有序数组的简洁 C++ 代码示例:
```cpp
#include <vector>
std::vector<int> mergeSortedArrays(std::vector<int>& nums1, std::vector<int>& nums2) {
std::vector<int> merged;
int i = 0, j = 0;
// 当两个数组还有元素未处理时
while (i < nums1.size() && j < nums2.size()) {
// 将较小的元素添加到结果数组,并移动对应的指针
if (nums1[i] <= nums2[j]) {
merged.push_back(nums1[i]);
i++;
} else {
merged.push_back(nums2[j]);
j++;
}
}
// 如果其中一个数组有剩余元素,直接添加到结果数组
while (i < nums1.size()) {
merged.push_back(nums1[i]);
i++;
}
while (j < nums2.size()) {
merged.push_back(nums2[j]);
j++;
}
return merged;
}
```
在这个函数中,我们首先初始化两个指针 `i` 和 `j` 分别指向两个输入数组的起始位置。然后,我们在两个数组都有元素的情况下比较当前元素,将较小的添加到 `merged` 数组并将相应的指针向前移动一位。最后,如果某个数组仍有剩余元素,我们将它们全部添加到 `merged`。
阅读全文
相关推荐













