C语言有序线性表的合并
时间: 2024-12-23 22:15:33 浏览: 4
在C语言中,合并两个有序线性表(也称为有序数组)通常可以使用归并排序的思想。这里提供一种简单的分治法实现:
**合并函数(Merge):**
```c
void merge(int arr1[], int size1, int arr2[], int size2, int result[]) {
int i = 0, j = 0, k = 0;
// 当两个数组都还有元素未处理时
while (i < size1 && j < size2) {
if (arr1[i] <= arr2[j]) { // 如果arr1当前元素较小
result[k++] = arr1[i++];
} else {
result[k++] = arr2[j++]; // 否则,取arr2的元素
}
}
// 处理其中一个数组剩余的元素
while (i < size1) {
result[k++] = arr1[i++];
}
while (j < size2) {
result[k++] = arr2[j++];
}
}
```
**合并两个已排序数组:**
```c
int main() {
int arr1[] = {1, 3, 5, 7};
int size1 = sizeof(arr1) / sizeof(arr1[0]);
int arr2[] = {2, 4, 6, 8};
int size2 = sizeof(arr2) / sizeof(arr2[0]);
int merged_arr[size1 + size2];
merge(arr1, size1, arr2, size2, merged_arr);
// 输出合并后的数组
for (int i = 0; i < size1 + size2; i++) {
printf("%d ", merged_arr[i]);
}
return 0;
}
```
阅读全文