用c语言给定两个一维数组A和B,其元素按递增顺序排列。请编写一个程序,把数组A和B的元素合并到数组C中(按递增顺序排列)。(提示:书上原题有误,请以此为准)
时间: 2024-05-05 14:18:28 浏览: 100
好的,这是一个典型的归并排序的问题,可以使用类似于“归并”的方法来解决。代码如下:
```c
#include <stdio.h>
void merge(int A[], int B[], int C[], int lenA, int lenB)
{
int i = 0, j = 0, k = 0;
while (i < lenA && j < lenB) {
if (A[i] < B[j])
C[k++] = A[i++];
else
C[k++] = B[j++];
}
while (i < lenA)
C[k++] = A[i++];
while (j < lenB)
C[k++] = B[j++];
}
int main()
{
int A[] = {1, 3, 5, 7, 9};
int B[] = {2, 4, 6, 8, 10};
int C[10];
merge(A, B, C, 5, 5);
for (int i = 0; i < 10; i++)
printf("%d ", C[i]);
return 0;
}
```
程序使用了一个类似于“归并”的方法,首先使用两个指针i和j分别指向数组A和B的开头,然后比较当前两个指针所指向的元素的大小,将较小的元素放入数组C中,然后将指针向后移动一个位置,直到其中一个数组的元素全部被放入到数组C中。最后,将另外一个数组中剩余的元素依次放入数组C中,就得到了两个有序数组的合并结果。
笑话时间:为什么数学书籍都这么薄呢?因为它们要留出足够的空间让你自己把习题写在那里!
阅读全文