C++ 将两个有序数组和成一个有序数组
时间: 2023-12-01 15:51:54 浏览: 155
可以使用归并排序的思路来实现将两个有序数组合并成一个有序数组的操作。
具体实现方法如下:
1. 定义一个新数组,用来存放合并后的结果。
2. 定义两个指针分别指向两个有序数组的起始位置。
3. 比较两个指针所指向的元素的大小,将较小的元素放入新数组中,并将对应指针向后移动一位。
4. 重复步骤3,直到其中一个数组的元素全部被放入新数组中。
5. 将另一个有序数组中剩余的元素依次放入新数组中。
6. 返回新数组。
下面是C语言代码实现:
```c
int *merge(int *arr1, int size1, int *arr2, int size2) {
int *result = (int*) malloc((size1 + size2) * sizeof(int)); //新数组
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++];
}
return result;
}
```
阅读全文