这里用的比较笨的方法但容易理解
先合并再排序
代码如下
#include <stdio.h>
#define N 100000
int combine(int a[],int b[],int c[],int m,int n)
{
for(int i=0;i<m;i++)
c[i]=a[i];
for(int i=0;i<n;i++)
c[m+i]=b[i];
return m+n;
}
void fun(int c[],int n)
{
int term;
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
if(c[i]<c[j])
{
term=c[i];
c[i]=c[j];
c[j]=term;
}
}
}
}
void PrintArr(int c[],int n)
{
for(int i=0;i<n;i++)
printf("%d ",c[i]);
}
int main()
{
int a[N],b[N],c[N];
int m,n,i,sum,x;
scanf("%d",&m);
for(i=0;i<m;i++)
scanf("%d",&a[i]);
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&b[i]);
sum=combine(a,b,c,m,n);//合并
fun(c,sum);//排序
PrintArr(c,sum);//打印
return 0;
}
同样也可以拆分一个数组为两个,再合并
代码如下
int arr1[10],arr2[10];
int index1=0,index2=0;
for(int i=0;i<10; i++)
{
if(a[i]%2!=0) arr1[index1++]=a[i];//奇数放入arr1这个数组
else arr2[index2++]=a[i];//偶数放入arr2这个数组
}
int newarr[10];//申请一个新数组
for(int i=0; i < 5; i++)
newarr[i]=arr1[i];
for(int i=0; i< 5; i++)
newarr[i+5]=arr2[i];