Sunteți pe pagina 1din 7

Realizat de

Coca Razvan (10E)


se dau doi vectori ordonai cresc tor (A i B)
se cere un al treilea vector care contine
toate elementele din cele dou iruri,
ordonate crescator (C)
Algoritmul de interclasare are
urmatoarea structur simpl:
se parcurg simultan irurile A, B si C

la fiecare pas se compar cele dou


componente din A si B, iar cea mai mic
dintre ele este mutat in C

cnd s-a terminat una din surse, A sau B,


componentele rmase se adaug la C
Un exemplu de algoritm in care
folosim interclasarea:
EXEMPLU ALGORITM
a[i] = (2,5,8) m=3 Pasul 3
b[j] = (3,7) n=2 5<7
i i+1; i 3
)
c[k] = (
c[3] 5
i=j=1 a; k=0 k k+1; k 4
Pasul 4
Pasul 1 8>7
comparam a[1] cu b[1]: 2<3 j j+1; j 3 (aici se opreste b)
i i+1 ; i 2 c[4] 7
c[k] a[1] ; c[1] 2 k5
k k+1; k 2 Pasul 5
Pasul 2 c[5] 8
5>3
j j+1; j 2 dupa terminarea programului va
c[2] 3 fi afisat rezultatul: 2,3,5,7,8
k k+1; k 3
Un exemplu de program C++ in
care folosim interclasarea:
#include<iostream.h>
void main(void)
{ int i,n,j,m,k;
float x[50],y[50],z[100];
citirea
cout<<"numarul de elemente ale vectorului x ";cin>>n;
celor doi for(i=1;i<=n;i++) { cout<<"x[<<i<<]= "; cin>>x[i]; }
vectori cout<<"Dati numarul de elemente alevectoruluii y ";
cin>>m;
for(j=1;j<=m;j++) { cout<<"y[<<j<<]= "; cin>>y[j]; }
i=1;j=1;k=0;
while( (i<=n) && (j<=m) )
if(x[i]<y[j]){k++;z[k]=x[i];i++;}
else {k++;z[k]=y[j];j++;}
if(i<=n) for(j=i;j<=n;j++) {k++;z[k]=x[j];}
else for(i=j;i<=m;i++) {k++;z[k]=y[i];}
cout<<endl<<"Vectorul z cu elementele interclasate este ";
for(i=1;i<=k;i++) cout<<z[i]<< ; }