将两个有序列表合并一个有序列表c语言代码实现
时间: 2024-05-06 12:21:48 浏览: 7
以下是将两个有序列表合并成一个有序列表的C语言代码实现:
```c
#include <stdio.h>
void merge(int arr1[], int n1, int arr2[], int n2, int mergedArr[]);
int main()
{
int arr1[] = {1, 3, 5, 7, 9};
int n1 = sizeof(arr1) / sizeof(arr1[0]);
int arr2[] = {2, 4, 6, 8, 10};
int n2 = sizeof(arr2) / sizeof(arr2[0]);
int mergedArr[n1 + n2];
merge(arr1, n1, arr2, n2, mergedArr);
printf("Merged array: ");
for(int i = 0; i < n1 + n2; i++)
{
printf("%d ", mergedArr[i]);
}
return 0;
}
void merge(int arr1[], int n1, int arr2[], int n2, int mergedArr[])
{
int i = 0, j = 0, k = 0;
while(i < n1 && j < n2)
{
if(arr1[i] < arr2[j])
{
mergedArr[k] = arr1[i];
i++;
}
else
{
mergedArr[k] = arr2[j];
j++;
}
k++;
}
while(i < n1)
{
mergedArr[k] = arr1[i];
i++;
k++;
}
while(j < n2)
{
mergedArr[k] = arr2[j];
j++;
k++;
}
}
```
这个程序可以将两个有序列表(arr1和arr2)合并成一个有序列表(mergedArr),然后输出结果。关键在于,通过比较arr1和arr2中元素的大小,将它们按顺序合并到mergedArr中。如果某一个列表已经全部合并完毕,就将另一个列表剩余的元素直接添加到mergedArr的末尾。