c语言数组的合并和升序排列

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在C语言中,你可以使用内建的排序函数`qsort`来对数组进行排序,然后使用冒泡排序或者插入排序等算法将两个数组进行合并。

以下是一个示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 函数比较两个整数
int compare(const void *a, const void *b) {
return (*(int*)a - *(int*)b);
}
// 函数用于合并两个已排序的数组
void merge(int arr[], int size1, int arr1[], int size2) {
int i = 0, j = 0, k = 0;
while (i < size1 && j < size2) {
if (arr1[i] <= arr[j]) {
arr[k++] = arr1[i++];
} else {
arr[k++] = arr[j++];
}
}
while (i < size1) {
arr[k++] = arr1[i++];
}
while (j < size2) {
arr[k++] = arr[j++];
}
}
int main() {
int arr1[] = {1, 5, 7};
int arr2[] = {2, 6, 8};
int size1 = sizeof(arr1) / sizeof(arr1[0]); int size2 = sizeof(arr2) / sizeof(arr2[0]); int arr[size1 + size2];
int i;
for (i = 0; i < size1; i++) {
arr[i] = arr1[i];
}
for (i = 0; i < size2; i++) {
arr[i + size1] = arr2[i];
}
qsort(arr, size1 + size2, sizeof(int), compare); // 对数组进行排序
merge(arr, size1, arr1, size2); // 合并两个数组
for (i = 0; i < size1 + size2; i++) { // 打印合并后的数组
printf("%d ", arr[i]);
}
return 0;
}
```
在这个代码中,`compare`函数是用于比较两个整数的。

`merge`函数则是用于合并两个已排序的数组。

在主函数中,我们首先创建了两个数组`arr1`和`arr2`,然后创建了一个新的数组`arr`来存储这两个数组的元素。

然后,我们使用`qsort`函数对`arr`进行排序,最后调用`merge`函数来合并`arr`和`arr1`。

最后,我们打印出合并后的数组。

相关文档
最新文档