方法1.在A1中从头到尾复制数字,复制后数字保存在A1中。
#include<iostream>
using namespace std;
void merge(int a[],int &a_length,int b[],int b_length){
int i,j,k,m;
i=0;
j=0;m=a_length-1;
while(j<=b_length-1&&i<=m){
if(a[i]<=b[j])
i++;
else{
for(k=m;k>=i;k--){
a[k+1]=a[k];
}
a[i]=b[j];
i++;
j++;
m++;
}
}
if(j<b_length)
while(j<=b_length-1)
a[i++]=b[j++];
a_length+=b_length;
}
int main(){
int a[20],b[8];
int a_length;
int b_length;
a[0]=2;
a[1]=3;
a[2]=4;
a[3]=7;
a[4]=7;
a_length=5;
b[0]=10;
b[1]=22;
b[2]=92;
b_length=3;
merge(a,a_length,b,b_length);
for(int i=0;i<a_length;i++)
cout<<a[i]<<endl;
return 0;
}
方法2:从尾到头复制数字
#include<iostream>
using namespace std;
void merge(int a[],int &a_length,int b[],int b_length){
int i,j,k,m;
i=0;
j=0;m=a_length-1;
while(j<=b_length-1&&i<=m){
if(a[i]<=b[j])
i++;
else{
for(k=m;k>=i;k--){
a[k+1]=a[k];
}
a[i]=b[j];
i++;
j++;
m++;
}
}
if(j<b_length)
while(j<=b_length-1)
a[i++]=b[j++];
a_length+=b_length;
}
int main(){
int a[20],b[8];
int a_length;
int b_length;
a[0]=2;
a[1]=3;
a[2]=4;
a[3]=7;
a[4]=7;
a_length=5;
b[0]=10;
b[1]=22;
b[2]=92;
b_length=3;
merge(a,a_length,b,b_length);
for(int i=0;i<a_length;i++)
cout<<a[i]<<endl;
return 0;
}