C++ 将两个有序数组和成一个有序数组
时间: 2023-12-01 18:00:30 浏览: 79
C++实现两个有序数组的合并
可以使用归并排序的思路来合并这两个有序数组。具体步骤如下:
1. 定义一个新数组,长度为两个有序数组的长度之和;
2. 使用两个指针分别指向两个有序数组的起始位置;
3. 比较两个指针所指的元素,将较小的元素放入新数组中,并将指向该元素的指针后移;
4. 重复步骤 3 直到其中一个有序数组的元素全部放入新数组中;
5. 将另一个有序数组的剩余元素依次放入新数组中;
6. 返回新数组。
以下是 C 语言的代码实现:
```c
int* merge(int* nums1, int nums1Size, int* nums2, int nums2Size) {
int* res = (int*)malloc((nums1Size + nums2Size) * sizeof(int));
int i = 0, j = 0, k = 0;
while (i < nums1Size && j < nums2Size) {
if (nums1[i] <= nums2[j]) {
res[k++] = nums1[i++];
} else {
res[k++] = nums2[j++];
}
}
while (i < nums1Size) {
res[k++] = nums1[i++];
}
while (j < nums2Size) {
res[k++] = nums2[j++];
}
return res;
}
```
其中,nums1 和 nums2 分别表示两个有序数组,nums1Size 和 nums2Size 分别表示它们的长度。函数返回一个指向新数组的指针。
阅读全文