#include<stdio.h>
#include <stdlib.h>
int main()
{
int i = 0;
int j = 0;
int *b;
int *a;
int N;
int M;
printf("请输入第一个数组的个数: ");
scanf("%d", &N);
printf("\n");
a = (int *) malloc(N * sizeof(int));//int 可以用*a来代替
printf("请输入第一个数组的数值:\n");
//获取第一个数组的值
for(i = 0; i < N; i++)
{
scanf("%d",&a[i]);
}
printf("\n");
printf("请输入第二个数组的个数: ");
scanf("%d", &M);
printf("\n");
b = (int *) malloc(M * sizeof(int));//int 可以用*a来代替
printf("请输入第二个数组的数值:\n");
//获取第二个数组的值
for(j = 0; j < M; j++)
{
scanf("%d",&b[j]);
}
/*
printf("你输入的数组1为:\n");
for(i = 0; i < N; i++)
{
printf("%-6d",a[i]);
}
printf("\n");
printf("你输入的数组2为:\n");
for(j= 0; j < M; j++)
{
printf("%-6d",b[j]);
}
printf("\n");
printf("排序后:\n");
*/
//排序数组a
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
if (a[i]<a[j])
{
int t=a[i];
a[i]=a[j];
a[j]=t;
}
for(i = 0; i < N; i++)
{
printf("%-6d",a[i]);
}
//排序数组b
for(i=0;i<M;i++)
for(j=i+1;j<M;j++)
if (b[i]<b[j])
{
int t=b[i];
b[i]=b[j];
b[j]=t;
}
//输出a数组
for(i = 0; i < N; i++)
{
printf("%-6d",a[i]);
}
printf("\n");
//输出B数组
for(i = 0; i < M; i++)
{
printf("%-6d",b[i]);
}
//两个数组排序完成
int z = 0;
int x=0,d=0;
int c[N+M];
while (x < N && d < M)
// 循环一直进行到拷贝完某一个数组的元素为止
{
if (a[x] < b[d])
// 拷贝a[]的元素
{
c[z++] = a[x++];
}
else if (a[x] >= b[d])
// 拷贝b[]的元素
{
c[z++] = b[d++];
}
}
// 如果a[]已经被拷贝完毕就拷贝b[]的元素
if (x == N)
{
while (d < M)
c[z++] = b[d++];
}
else
// 如果b[]已经被拷贝完毕就拷贝a[]的元素
{
while (x < N)
c[z++] = a[x++];
}
free(a);
free(b);
for(int q=0;q<n;q++)
printf("%d",c[q]);
printf("\n");
return 0;
}
代码功能是这样的。。。先分别输入两个数组。。然后对这两个数组过行完排序后。在将两个数组合并到第三个数组中进行排序。。。
上面是我写的代吗。。。
有错误。。我也不知道那错了。。
有高手能告诉我怎么处理吗。或更好的方法。。
我只有这么点分了。。希望那位大侠能帮个忙。。先在这谢谢。。。
说的方法最好带个实例。。不然我可能看不懂。。或不知道用。。