c语言中将两个一维数组合并为一个一个数组并从小到大输出的简单代码
时间: 2024-10-17 12:09:52 浏览: 24
在C语言中,你可以通过动态内存分配和两层循环来合并两个一维数组并排序。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 假设我们有两个数组a和b,它们都是整数类型的
int* mergeAndSort(int arr1[], int arr2[], int len1, int len2) {
// 计算总的元素个数
int totalElements = len1 + len2;
// 动态分配内存
int* combinedArr = (int*)malloc(totalElements * sizeof(int));
// 拷贝第一个数组
for (int i = 0; i < len1; ++i) {
combinedArr[i] = arr1[i];
}
// 将第二个数组拷贝到剩余位置,并保持顺序
for (int i = 0, j = len1; i < len2; ++i, ++j) {
combinedArr[j] = arr2[i];
}
// 合并后的数组排序
qsort(combinedArr, totalElements, sizeof(int), compare);
return combinedArr;
}
// 自定义比较函数,用于qsort排序
int compare(const void* a, const void* b) {
return (*(int*)a - *(int*)b);
}
void printArray(int arr[], int size) {
for (int i = 0; i < size; ++i) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
int arr1[] = {5, 2, 8};
int len1 = sizeof(arr1) / sizeof(arr1[0]);
int arr2[] = {9, 1, 6};
int len2 = sizeof(arr2) / sizeof(arr2[0]);
int* mergedSortedArr = mergeAndSort(arr1, arr2, len1, len2);
printArray(mergedSortedArr, len1 + len2);
free(mergedSortedArr); // 释放动态内存
return 0;
}
阅读全文