Pular para o conteúdo principal

Questão de Programação — Conceitos básicos de programação — CESGRANRIO 2022

ProgramaçãoConceitos básicos de programação
Código
cg016670
Banca
CESGRANRIO
Órgão
Banco da Amazônia
Ano
2022
Nível
Superior
Cargo
Técnico Científico - Tecnologia da Informação
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?
  1. 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); } }
  2. 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++];intercala(v1,p1,v2,p2,v3,p3);}elseif(p2 < v2.length) {v3[p3++]=v2[p2++];intercala(v1,p1,v2,p2,v3,p3);}}
  3. 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);elseif(p1 < v1.length && p2 == v2.length)intercala(v1,p1+1,v2,p2,v3,p3+1);elseif(p1 == v1.length && p2 < v2.length)intercala(v1,p1,v2,p2+1,v3,p3+1);elsereturn;if(p1 < v1.length)if(p2 < v2.length)if(v1[p1] < v2[p2])v3[p3]=v1[p1];elsev3[p3]=v2[p2];elsev3[p3]=v1[p1];elsev3[p3]=v2[p2];}
  4. 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; } }
  5. 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++; } }
Revelar gabarito e comentário

GabaritoB — static 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++]; intercala(v1,p1,v2,p2,v3,p3); } else if(p2 < v2.length) { v3[p3++]=v2[p2++]; intercala(v1,p1,v2,p2,v3,p3); } }

Link permanente: /questoes/cg016670