Questão de TI - Desenvolvimento de Sistemas — Códigos em Java — CESGRANRIO 2022
- Código
- cg056605
- Banca
- CESGRANRIO
- Órgão
- BASA
- Ano
- 2022
- Cargo
- Tec Cien ( )
Sejam dois arrays de inteiros, com zero ou mais elementos cada, ordenados ascendentemente. Deseja-se escrever uma função que receba esses dois arrays como parâmetros e insira os seus elementos em um terceiro array, também recebido como parâmetro, de modo que os elementos inseridos no terceiro array permaneçam ordenados ascendentemente, como no exemplo abaixo.
Exemplo:
int v1[]={10,20,30,40,50};
int v2[]={5,10,15,20};
O conteúdo do terceiro array, após a chamada da função de intercalação, será
{5,10,10,15,20,20,30,40,50}
Nesse contexto, considere a seguinte função main de um programa Java:
public class Main {
public static void main(String[] args) {
int v1[]={10,20,30,40,50};
int v2[]={5,10,15,20};
int v3[]=new int [v1.length + v2.length];
int p1=0,p2=0,p3=0;
intercala(v1,p1,v2,p2,v3,p3);
}
}
Qual função deve ser inserida na classe Main para que a intercalação do array v1 com o array v2 seja feita corretamente?
- Astatic void intercala(int v1[],int p1,int v2[],int p2,int v3[],int p3) { if(p1 == v1.length && p2 == v2.length) return; if(v1[p1] < v2[p2]) { v3[p3++]=v1[p1++]; intercala(v1,p1,v2,p2,v3,p3); } else { v3[p3++]=v2[p2++]; intercala(v1,p1,v2,p2,v3,p3); } }
- Bstatic void intercala(int v1[],int p1,int v2[],int p2,int v3[],int p3) { if(p1 == v1.length && p2 == v2.length) return; if(p1 < v1.length) if(p2 < v2.length) if(v1[p1] < v2[p2]) { v3[p3++]=v1[p1++]; intercala(v1,p1,v2,p2,v3,p3); } else { v3[p3++]=v2[p2++]; intercala(v1,p1,v2,p2,v3,p3); } else { v3[p3++]=v1[p1++]; ntercala(v1,p1,v2,p2,v3,p3); } else if(p2 < v2.length) { v3[p3++]=v2[p2++]; intercala(v1,p1,v2,p2,v3,p3); } }
- Cstatic void intercala(int v1[],int p1,int v2[],int p2,int v3[],int p3) { if(p1 < v1.length && p2 < v2.length) intercala(v1,p1+1,v2,p2+1,v3,p3+1); else if(p1 < v1.length && p2 == v2.length) intercala(v1,p1+1,v2,p2,v3,p3+1); else if(p1 == v1.length && p2 < v2.length) intercala(v1,p1,v2,p2+1,v3,p3+1); else return; if(p1 < v1.length) if(p2 < v2.length) if(v1[p1] < v2[p2]) v3[p3]=v1[p1]; else v3[p3]=v2[p2]; else v3[p3]=v1[p1]; else v3[p3]=v2[p2]; }
- Dstatic void intercala(int v1[],int p1,int v2[],int p2,int v3[],int p3) { while(p1 < v1.length && p2 < v2.length) if(v1[p1] < v2[p2]) { v3[p3]=v1[p1]; p3+=1; p1+=1; } else if(v1[p1] > v2[p2]) { v3[p3]=v2[p2]; p3+=1; p2+=1; } else { v3[p3]=v1[p1]; p1+=1; p3+=1; v3[p3]=v2[p2]; p3+=1; p2+=1; } }
- Estatic void intercala(int v1[],int p1,int v2[],int p2,int v3[],int p3) { while(p1 < v1.length || p2 < v2.length) if(v1[p1] < v2[p2]) { v3[p3]=v1[p1]; p3++; p1++; } else if(v1[p1] > v2[p2]) { v3[p3]=v2[p2]; p3++; p2++; } else { v3[p3]=v1[p1]; p1++; p3++; v3[p3]=v2[p2]; p3++; p2++; } }