1.方案一 : 直接将数组b中的元素插入到数组a中
#include<stdio.h>
#define size1 100
#define size2 20
int CalculateNum(int *a,int size)//计算数组中元素个数 size是数组容量
{
int count = 0;
for(int i = 0;i < size;i++)
{
if(a[i] == 0)
{
return count;
break;
}
count++;
}
return count;
}
void Print(int *a,int len)//打印数组
{
for(int i = 0;i < len;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
int main()
{
int a[size1] = {1,4,6,19,20,36,89,100,543,777777};
int len1 = CalculateNum(a,size1);//计算a中元素个数
int b[size2] = {2,4,8,13,27,32,99,1293};
int len2 = CalculateNum(b,size2);//计算b中元素个数
for(int i = 0;i < len2;i++)//外循环取决于数组b元素的个数
{
for(int j = 0;j < len1;j++)//内循环为每次最多比较的个数
{
if(b[i] <= a[j])
{
for(int k = len1;k > j;k--)//把要插入位置后面的元素后移
{
a[k] = a[k-1];
}
a[j] = b[i];
len1++;
break;
}
}
}
for(int i = 0;i < len2;i++)//判断数组b中是否有大于数组a中所有元素的元素
{
if(b[i] > a[len1-1])
{
a[len1]= b[i];
len1++;
}
}
Print(a,len1);
}
2.方案二:定义一个新数组,将a,b数组插进去
#include<stdio.h>
#define size1 100
#define size2 20
int CalculateNum(int *a,int size)//计算数组中元素个数 size是数组容量
{
int count = 0;
for(int i = 0;i < size;i++)
{
if(a[i] == 0)
{
return count;
break;
}
count++;
}
return count;
}
void Print(int *a,int len)//打印数组
{
for(int i = 0;i < len;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
int main()
{
int a[size1] = {1,4,6,19,20,36,89,100,543,777777};
int len1 = CalculateNum(a,size1);
int b[size2] = {2,4,8,13,27,32,99,1293};
int len2 = CalculateNum(b,size2);
int c[size1+size2]={0};
int ptra = 0,ptrb = 0,ptrc = 0;
while(ptra < len1 && ptrb < len2)
{
if(a[ptra]<b[ptrb])
{
c[ptrc] = a[ptra];
ptra++;
ptrc++;
}
else
{
c[ptrc] = b[ptrb];
ptrb++;
ptrc++;
}
}
if(ptra == len1)
{
while(ptrb < len2)
{
c[ptrc] = b[ptrb];
ptrb++;
ptrc++;
}
}
if(ptrb == len2)
{
while(ptra < len1)
{
c[ptrc] = a[ptra];
ptra++;
ptrc++;
}
}
int len3 = CalculateNum(c,size1+size2);
Print(c,len3);
}