运行结果如下:
代码如下;
#include <stdio.h>
//a:目标数组
//lena: a数组有效元素个数
//b:操作数组
//lenb: b数组有效元素个数
//注意:a数组空间应>= a+b的长度
int ArrAddArr(int *a, int lena, int *b, int lenb)
{
int i,j;
for(i=0; i < lenb; i++)
{
// 将大数向后移动
// for(j=lena+i-1 ; j >= 0 ; j-- )
// {
// if(a[j] > b[i]) a[j+1] = a[j];
// else break;
// }
// a[j+1] = b[i];
// 方式2
// for(j=lena+i; j-1 >= 0; j--)
// {
// if(a[j-1] > b[i] ) a[j] = a[j-1];
// else break;
// }
// a[j] = b[i];
// 方式3
for(j=lena+i; j-1>=0 && a[j-1] > b[i]; a[j]=a[j-1],j--);
a[j] = b[i];
}
return 0;
}
void show(int *a, int len)
{
while(len --) printf("%d ",*a++);
}
int main()
{
int a[20] = {1,3,5,7,8};
int b[5] = {2,3,5,8,9};
ArrAddArr(a,5,b,5);
show(a,10);
return 0;
}