Sunteți pe pagina 1din 3

Interclasarea a doi vectori sortați

Se pune problema ca, pornind de la doi vectori x și y sortați crescător, să formăm un vector z
care să conțină elementele celor doi vectori dați tot în ordine crescătoare.

#include<iostream>
using namespace std;
int main()
{int x[100],y[100],z[200],j,i,n,m,k;
cout<<"n=";cin>>n;
cout<<"m=";cin>>m;
cout<<"x[1]=";cin>>x[1]; //algoritmul de citire a unui sir sortat crescator
for(i=2;i<=n;i++)
do
{cout<<"x["<<i<<"]";cin>>x[i];}
while(x[i]<=x[i-1]);
cout<<"y[1]=";cin>>y[1];
for(i=2;i<=m;i++)
do
{cout<<"y["<<i<<"]";cin>>y[i];}
while(y[i]<=y[i-1]);
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)
while(i<=n){k++;
z[k]=x[i];
i++;
}
if (j<=m)
while(j<=m){k++;
z[k]=y[j];
j++;
}
cout<<"vectorul sortat este";
for(i=1;i<=k;i++) cout<<z[i];
return 0;
}

Cautarea binară
Se pune problema sa cautam un element nr, intr-un sir sortat v.
#include<iostream>
using namespace std;
int main()
{ int v[100],n,i,li,ls,k,nr,gasit;
cout<<"n=";cin>>n;
cout<<"v[1]=";cin>>v[1];
for(i=2;i<=n;i++)
do
{cout<<"v["<<i<<"]=";cin>>v[i];}
while(v[i]<=v[i-1]);
cout<<"nr=";cin>>nr;
li=1;ls=n;gasit=0;
while(li<=ls && gasit==0)
{k=(li+ls)/2;
if(v[k]==nr)
{ cout<<"s-a gasit pe pozitia"<<k;
gasit=1;
}
else
if(v[k]<nr) li=k+1;
else ls=k-1;
}
if(li>ls) cout<<"Nu s-a gasit";
return 0;
}

S-ar putea să vă placă și