Interclasarea a două șiruri sortate.
Se dau două șiruri v și w cu N respectiv M elemente întregi în ordine crescătoare. Să se afișeze elementele celor două șiruri în ordine crescătoare.
Date de intrare
De la tastatură se va citi numărul N și un șir de N numere întregi, reprezentând elementele șirului v. Pe urmă se va citi numărul M și un șir de M numere întregi.
Date de ieșire
Pe ecran se vor afișa elementele celor două șiruri în ordine crescătoare.
Restricții și precizări
1 ≤ N, M ≤ 100 000
-2 000 000 000 ≤ v[i], w[i] ≤ 2 000 000 000
Exemplu
Date de intrare Date de ieșire
3
1 4 6
4
-1 0 2 7 -1 0 1 2 4 6 7
Răspunsuri la întrebare
Răspuns de
12
#include <iostream>
using namespace std;
int main()
{
int N,M,v[100000],w[100000],i,j,k=0;
int vw[200000];
cin>>N;
for(i=0;i<N;i++)
cin>>v[i];
cin>>M;
for(i=0;i<M;i++)
cin>>w[i];
i=0; j=0;
//Interclasarea
while(i < N && j < M)
{
if(v[i] < w[j])
{
vw[k] = v[i];
k++;
i++;
}
else
{
vw[k] = w[j];
k++;
j++;
}
}
if(i <= N)
{
for(int p = i; p < N; p++)
{
vw[k] = v[p];
k++;
}
}
if(j <= M)
{
for(int p = j; p < M; p++)
{
vw[k] = w[p];
k++;
}
}
for(int p = 0; p < k; p++)
cout << vw[p] << " ";
}
using namespace std;
int main()
{
int N,M,v[100000],w[100000],i,j,k=0;
int vw[200000];
cin>>N;
for(i=0;i<N;i++)
cin>>v[i];
cin>>M;
for(i=0;i<M;i++)
cin>>w[i];
i=0; j=0;
//Interclasarea
while(i < N && j < M)
{
if(v[i] < w[j])
{
vw[k] = v[i];
k++;
i++;
}
else
{
vw[k] = w[j];
k++;
j++;
}
}
if(i <= N)
{
for(int p = i; p < N; p++)
{
vw[k] = v[p];
k++;
}
}
if(j <= M)
{
for(int p = j; p < M; p++)
{
vw[k] = w[p];
k++;
}
}
for(int p = 0; p < k; p++)
cout << vw[p] << " ";
}
Alte întrebări interesante
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă