Metoda interclasarii foloseste cel putin 2 vectori ordonati pentru a creea un alt vector ordonat ce contine toate elementele acestora.
Acest exemplu foloseste 2 vectori ordonati crescator si formeaza un al treilea continand toatele elementele lor in ordine crescatoare.
int main()
{
int a[20],b[30],c[50],m,n,i,j,k;
cin>>n>>m;
for(i=1;i<=n;i++)fin>>a[i];
for(j=1;j<=m;j++)fin>>b[j];
i=1;j=1;k=0;
while(i<=n&&j<=m)
{
if(a[i]<=b[j])c[++k]=a[i++];
else c[++k]=b[j++];
}
while(i<=n)c[++k]=a[i++];
while(j<=m)c[++k]=b[j++];
for(i=1;i<=k;i++)
cout<<c[i]<<' ';
return 0;
}
explicatie: a=1,3,5,7,8; b=2,4,6,8; c=1,2,3,4,5,6,7,8.
-a crescator; b descrescator; c crescator:
int main()
{
int a[20],b[30],c[50],i,j,n,m,k;
fin>>n>>m;
for(i=1;i<=n;i++)fin>>a[i];
for(j=1;j<=m;j++)fin>>b[j];
i=1;j=m;k=0;
while(i<=n&&j>=1)
{
if(a[i]<b[j])c[++k]=a[i++];
else c[++k]=b[j--];
}
while(i<=n)c[++k]=a[i++];
while(j>=1)c[++k]=b[j--];
for(i=1;i<=k;i++)fout<<c[i]<<' ';
return 0;
}
-a descrescator; b descrescator; c crescator:
int main()
{
int a[20],b[30],c[50],n,m,j,i,k;
fin>>n>>m;
for(i=1;i<=n;i++)fin>>a[i];
for(j=1;j<=m;j++)fin>>b[j];
i=n;j=m;k=0;
while(i>=1&&j>=1)
{
if(a[i]<b[j])c[++k]=a[i--];
else c[++k]=b[j--];
}
while(i>=1)c[++k]=a[i--];
while(j>=1)c[++k]=b[i--];
for(i=1;i<=k;i++)
fout<<c[i]<<' ';
return 0;
}
-a crescator; b descrescator; c descrescator:
int main()
{
int a[20],b[30],c[50],m,n,i,j,k;
fin>>n>>m;
for(i=1;i<=n;i++)fin>>a[i];
for(j=1;j<=m;j++)fin>>b[j];
i=n;
j=1;k=0;
while(i>=1&&j<=m)
{
if(a[i]>b[j])c[++k]=a[i--];
else if(a[i]==b[j]){c[++k]=a[i--];j++;}
else c[++k]=b[j++];
}
while(i>=1)c[++k]=a[i--];
while(j<=m)c[++k]=b[j++];
for(i=1;i<=k;i++)
fout<<c[i]<<' ';
return 0;
}