InterClasAre

7
Realizat de Coca Razvan (10E)

description

interclasare

Transcript of InterClasAre

Realizat deCoca Razvan (10E)

• se dau doi vectori ordonaţi crescse dau doi vectori ordonaţi crescăător (A şi B)tor (A şi B)• se cere un al treilea vector care contine se cere un al treilea vector care contine toate elementele din cele doutoate elementele din cele douăă şiruri, şiruri, ordonate crescator (C)ordonate crescator (C)

• se parcurg simultan şirurile A, B si Cse parcurg simultan şirurile A, B si C • la fiecare pas se comparla fiecare pas se comparăă cele dou cele douăă componente din A si B, iar cea mai miccomponente din A si B, iar cea mai micăă dintre ele este mutatdintre ele este mutatăă in C in C

• când s-a terminat una din surse, A sau B, când s-a terminat una din surse, A sau B, componentele rcomponentele răămase se adaugmase se adaugăă la C la C

Algoritmul de interclasare are Algoritmul de interclasare are urmatoarea structururmatoarea structurăă simpl simplăă::

Un exemplu de algoritm in care Un exemplu de algoritm in care folosim interclasarea:folosim interclasarea:

a[i] = (2,5,8) m=3b[j] = (3,7) n=2

c[k] = (□ □ □ □ □)i=j=1 a; k=0

Pasul 1comparam a[1] cu b[1]: 2<3i ← i+1 ; i ← 2c[k] ←a[1] ; c[1] ← 2k ← k+1; k ←2Pasul 25>3j ← j+1; j ← 2c[2] ← 3k ← k+1; k ← 3

Pasul 35 < 7i ← i+1; i ←3c[3] ← 5k ← k+1; k ← 4Pasul 48 > 7j ← j+1; j ←3 (aici se opreste b)c[4] ← 7k ← 5Pasul 5c[5] ← 8

dupa terminarea programului va fi afisat rezultatul: 2,3,5,7,8

EXEMPLU ALGORITM

Un exemplu de program C++ in Un exemplu de program C++ in care folosim interclasarea:care folosim interclasarea:

#include<iostream.h>#include<iostream.h>void main(void)void main(void){ int i,n,j,m,k;{ int i,n,j,m,k;float x[50],y[50],z[100];float x[50],y[50],z[100];cout<<"numarul de elemente ale vectorului x ";cin>>n;cout<<"numarul de elemente ale vectorului x ";cin>>n;for(i=1;i<=n;i++) { cout<<"x[“<<i<<”]= "; cin>>x[i]; }for(i=1;i<=n;i++) { cout<<"x[“<<i<<”]= "; cin>>x[i]; }cout<<"Dati numarul de elemente alevectoruluii y "; cout<<"Dati numarul de elemente alevectoruluii y "; cin>>m;cin>>m;for(j=1;j<=m;j++) { cout<<"y[“<<j<<”]= "; cin>>y[j]; }for(j=1;j<=m;j++) { cout<<"y[“<<j<<”]= "; cin>>y[j]; }i=1;j=1;k=0;i=1;j=1;k=0;while( (i<=n) && (j<=m) )while( (i<=n) && (j<=m) )if(x[i]<y[j]){k++;z[k]=x[i];i++;}if(x[i]<y[j]){k++;z[k]=x[i];i++;}else {k++;z[k]=y[j];j++;}else {k++;z[k]=y[j];j++;}if(i<=n) for(j=i;j<=n;j++) {k++;z[k]=x[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];}else for(i=j;i<=m;i++) {k++;z[k]=y[i];}cout<<endl<<"Vectorul z cu elementele interclasate este ";cout<<endl<<"Vectorul z cu elementele interclasate este ";for(i=1;i<=k;i++) cout<<z[i]<<” ”; }for(i=1;i<=k;i++) cout<<z[i]<<” ”; }

citirea celor doi vectori