INTERCLASAREA A DOI VECTORI
Avand la dispozitie două tablouri unidimensionale (doi vectori) care au elementele ordonate crescător (sau descrescător) ne punem problema construirii unui al treilea tablou care să contină elementele primelor două respectând acelasi criteriu de ordonare (crescător sau descrescător).
O primă idee ar fi aceea de a reuni elementele celor doi vectori, retinem rezultatul în cel de al treilea si apoi îl sortăm pe acesta crescător sau descrescător, în functie de cum erau ordonati vectorii initiali.
si daca cei doi vectori nu sunt ordonati cum facem interclasarea astfel incat sa obtinem un vector ordonat
RăspundețiȘtergerese sorteaza cei doi vectori :)
RăspundețiȘtergereAm facut tot ce este afisat aici ,insa cand am rulat programul nu mi s-a afisat vectorul c
RăspundețiȘtergereN-are cum :) Merge. :) Verifica sintaxa.
RăspundețiȘtergereDupa patru ani de liceu am inteles interclasarea.Multumesc!
RăspundețiȘtergereMa bucur daca ai inteles. :)
RăspundețiȘtergereSi daca am 2 vectori ordonati descrescator cum folosesc interclasarea ca sa-i ordonez intr-un al 3-lea vector tot descrescator?
RăspundețiȘtergereSe foloseste la fel doar ca atunci cand comparam elementul Ai cu Bi adaugam la C pe pozitia k elementul mai mare dintre Ai si Bi. :)
RăspundețiȘtergerede exemplu, daca,in pascal: if a[i]<b[j] then begin k:=k+1;
Ștergerec[k]:=b[j];
si aici trecem mai departe cu i:=i+1? sau cu j:=j+1?
Daca elementul Ai a fost mai mic (if a[i]<b[j]) atunci incrementam i (mergem mai departe cu i=i+1). In caz contrar (Bj a fost mai mic) incrementam j.
ȘtergereVezi ca sunt sintetizati pasii pe figura cu fond galben.
Vectorul c nu trebuie sa aiba dimensiunea >20?
RăspundețiȘtergereAdica sa aiba > 20 elemente?
Ștergeregen in declararea marimii vectorului marimea lui a si b este de 20 daca vom folosi 11 elemente in a si 10 in b va disparea un element deoarece c are doar 20 elemente posibile
Ștergerein pascal
RăspundețiȘtergereAcest comentariu a fost eliminat de autor.
RăspundețiȘtergerefoarte frumos explicat !
RăspundețiȘtergereMa bucur ca ai inteles usor :)
ȘtergereFrumos explicat, doar ca este o mica problema.
RăspundețiȘtergereDaca vectorii a si b sunt declarati ca mai sus cu 20 de spatii (a[20] si b[20]) este necesar ca vectorul c sa aiba 40 de spatii ( c[40]). Altfel se vor pierde elemente. Numai bine !
Pai scrie chiar la inceput ca vectorul a are n elemente, b are m elemente iar c are n+m elemente.
ȘtergereAsa e, m-am uitat mai mult la acea poza cu programul, iar acolo e gresit.
ȘtergereAcest comentariu a fost eliminat de autor.
RăspundețiȘtergereDe ce l nu este declarat? sau daca este unde, in caz ca nu am vazut bine ;)
RăspundețiȘtergerel este declarat.
ȘtergereThis program in 2016:
RăspundețiȘtergere#include
using namespace std;
int main()
{
int a[20],b[20],c[20],n,m,i,j,k,l;
cout<<"n="; cin>>n;
cout<<"m="; cin>>m;
for(i=0;i<=n-1;i++)
{
cout<<"a["<>a[i];
}
for(j=0;j<=m-1;j++)
{
cout<<"b["<>b[j];
}
k=0;i=1;j=1;
while(i<=n && j<=m)
if(a[i]<b[j])
{
k++;
c[k]=a[i];
i++;
}
else
{
k++;
c[k]=b[j];
j++;
}
if(i<=n)
for(l=i;l<=n;l++)
{
k++;
c[k]=a[l];
}
if(j<=m)
for(l=j;l<=m;l++)
{
k++;
c[k]=b[l];
}
cout<<"vectorul interclasat este: "<<endl;
for(i=1;i<=k;i++)
cout<<c[i]<<" ";
cout<<endl;
return 0;
}
This program in 2016:
RăspundețiȘtergere#include
using namespace std;
int main()
{
int a[20],b[20],c[20],n,m,i,j,k,l;
cout<<"n="; cin>>n;
cout<<"m="; cin>>m;
for(i=0;i<=n-1;i++)
{
cout<<"a["<>a[i];
}
for(j=0;j<=m-1;j++)
{
cout<<"b["<>b[j];
}
k=0;i=1;j=1;
while(i<=n && j<=m)
if(a[i]<b[j])
{
k++;
c[k]=a[i];
i++;
}
else
{
k++;
c[k]=b[j];
j++;
}
if(i<=n)
for(l=i;l<=n;l++)
{
k++;
c[k]=a[l];
}
if(j<=m)
for(l=j;l<=m;l++)
{
k++;
c[k]=b[l];
}
cout<<"vectorul interclasat este: "<<endl;
for(i=1;i<=k;i++)
cout<<c[i]<<" ";
cout<<endl;
return 0;
}
Daca vectorul cu elemente mai multe nu este sortat, atunci vectorul interclasat isi va pierde sortarea(v[i]v[i+2]). Ar fi mai bine sa se sorteze ambii vectori la penultimul pas, in if-uri sort(a[i]+i,a[i]+n) si apoi interclasarea curge de la sine :)
RăspundețiȘtergereCei doi vectori initiali trebuie sa fie sortati. Abia apoi se poate face interclasarea lor.
ȘtergereDin 2 vectori ordonați crescător cum folosesc interclasarea ca sa ii ordonez descrescător intr-un al 3-lea vector?
RăspundețiȘtergereSe poate?
Pentru asta trebuie mai intai sa sortezi descrescator cei doi vectori initiali.
Ștergere