C语言有序顺序表的合并
时间: 2024-10-17 17:07:21 浏览: 6
在C语言中,有序顺序表(通常是数组形式)的合并,也称为归并排序的过程,是一个典型的递归算法。这个过程的基本思路是将两个已排序的子列表合并成一个新的有序列表。以下是合并两个有序数组的一个简单示例:
```c
#include <stdio.h>
// 合并两个有序数组的功能
void merge(int arr1[], int size1, int arr2[], int size2, int merged[]) {
int i = 0, j = 0, k = 0;
// 当两个子数组都还有元素时
while (i < size1 && j < size2) {
// 如果arr1的元素小于arr2的元素,将其添加到merged数组
if (arr1[i] <= arr2[j]) {
merged[k++] = arr1[i++];
}
// 否则,从arr2中取元素
else {
merged[k++] = arr2[j++];
}
}
// 将剩余未添加的元素添加到merged数组
// 如果arr1还有元素,依次添加
while (i < size1) {
merged[k++] = arr1[i++];
}
// 如果arr2还有元素,依次添加
while (j < size2) {
merged[k++] = arr2[j++];
}
}
int main() {
int arr1[] = {1, 3, 5};
int size1 = sizeof(arr1) / sizeof(arr1[0]);
int arr2[] = {2, 4, 6};
int size2 = sizeof(arr2) / sizeof(arr2[0]);
int merged[size1 + size2];
merge(arr1, size1, arr2, size2, merged);
printf("Sorted merged array: ");
for (int i = 0; i < size1 + size2; i++) {
printf("%d ", merged[i]);
}
return 0;
}
```
当你运行这个程序,它会输出合并后的有序数组:`1 2 3 4 5 6`。
阅读全文