用c语言设有整型数组 a[5],b[5]和c[10],分别向a、b数组输入 5个数据,然后将a和b合并到数组c中并排序。
时间: 2023-06-08 19:06:19 浏览: 72
c语言合并两个已排序数组的示例(c语言数组排序)
5星 · 资源好评率100%
好的,我理解了你的问题。以下是用C语言实现的代码,可以实现将两个整型数组a和b合并到数组c中,并进行排序。
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10
void merge_sort(int *arr, int left, int right) {
if (left >= right) {
return;
}
int mid = left + (right - left) / 2;
merge_sort(arr, left, mid);
merge_sort(arr, mid + 1, right);
int i = left, j = mid + 1, k = 0;
int *temp = (int *)malloc(sizeof(int) * (right - left + 1));
while (i <= mid && j <= right) {
if (arr[i] < arr[j]) {
temp[k++] = arr[i++];
} else {
temp[k++] = arr[j++];
}
}
while (i <= mid) {
temp[k++] = arr[i++];
}
while (j <= right) {
temp[k++] = arr[j++];
}
k--;
while (k >= 0) {
arr[left + k] = temp[k];
k--;
}
free(temp);
}
void merge_arrays(int *a, int *b, int *c) {
int i, j;
for (i = 0; i < 5; i++) {
c[i] = a[i];
}
for (j = 0; j < 5; j++) {
c[i + j] = b[j];
}
merge_sort(c, 0, 9);
}
int main() {
int a[5], b[5], c[MAX_SIZE];
int i;
printf("请输入数组a中的5个数据:\n");
for (i = 0; i < 5; i++) {
scanf("%d", &a[i]);
}
printf("请输入数组b中的5个数据:\n");
for (i = 0; i < 5; i++) {
scanf("%d", &b[i]);
}
merge_arrays(a, b, c);
printf("合并后的数组c为:\n");
for (i = 0; i < 10; i++) {
printf("%d ", c[i]);
}
printf("\n");
return 0;
}
```
这段代码首先定义了一个merge_sort函数,该函数用于归并排序。然后定义了一个merge_arrays函数,用于将两个数组合并到一起并进行排序,最后在main函数中调用merge_arrays函数实现合并和排序,最终输出合并后的数组c。
阅读全文