Galera, estou com um problema que não faço ideia de como implementar, dado dois vetores,A e B, preciso imprimir um vetor C contendo a A U B
(A união B) ordenado.
Exemplo:
VetorA {1,1,3,4}
VetorB {1,2,2,3,5}
OUTPUT:
VetorC {1,2,3,4,5}
Galera, estou com um problema que não faço ideia de como implementar, dado dois vetores,A e B, preciso imprimir um vetor C contendo a A U B
(A união B) ordenado.
Exemplo:
VetorA {1,1,3,4}
VetorB {1,2,2,3,5}
OUTPUT:
VetorC {1,2,3,4,5}
Olá amigo,
Eu não entendi muito bem a sua lógica, mas quebrei um pouco a cabeça e consegui chegar no resultado esperado. Vou postar o código aqui, fico aberto para quaisquer sugestões ou críticas construtivas.
Classe UniaoVetores:
import java.util.Arrays;
import java.util.Random;
public class UniaoVetores {
private int[] a;
private int[] b;
private int[] aux;
private int[] principal;
public UniaoVetores(int aSize, int bSize) {
this.a = new int[aSize];
this.b = new int[bSize];
this.aux = new int[aSize + bSize];
}
public void setArrayPrincipalSize() {
int temp = 0;
int contador = 0;
for (int i = 0; i < aux.length; i++) {
if (i == 0) {
temp = aux[i];
} else {
if (temp == aux[i]) {
contador++;
} else {
temp = aux[i];
}
}
}
geraArrayPrincipal(contador);
}
public void geraArrayPrincipal(int n) {
int temp = 0;
principal = new int[aux.length - n];
int ip = 0; // indice da array principal
for (int i = 0; i < aux.length; i++) {
if (i == 0) {
principal[ip] = aux[i];
temp = aux[i];
ip++;
} else {
if (temp != aux[i]) {
principal[ip] = aux[i];
temp = aux[i];
ip++;
}
}
}
}
public void getA() {
System.out.print("Vetor A: ");
for (int i = 0; i < a.length; i++) {
if (i == 0) {
System.out.printf("{%d, ", a[i]);
} else {
if (i == a.length - 1) {
System.out.printf("%d}", a[i]);
} else {
System.out.printf("%d, ", a[i]);
}
}
}
}
public void getB() {
System.out.print("\nVetor B: ");
for (int i = 0; i < b.length; i++) {
if (i == 0) {
System.out.printf("{%d, ", b[i]);
} else {
if (i == b.length - 1) {
System.out.printf("%d}", b[i]);
} else {
System.out.printf("%d, ", b[i]);
}
}
}
}
public void getPrincipal() {
System.out.print("\nVetor Principal: ");
for (int i = 0; i < principal.length; i++) {
if (i == 0) {
System.out.printf("{%d, ", principal[i]);
} else {
if (i == principal.length - 1) {
System.out.printf("%d}", principal[i]);
} else {
System.out.printf("%d, ", principal[i]);
}
}
}
}
public void gerarArraysAux() {
Random r = new Random();
for (int i = 0; i < a.length; i++) {
a[i] = r.nextInt(6);
}
for (int i = 0; i < b.length; i++) {
b[i] = r.nextInt(6);
}
System.arraycopy(a, 0, aux, 0, a.length);
System.arraycopy(b, 0, aux, a.length, b.length);
}
public void ordenarArrayAux() {
Arrays.sort(aux);
}
}
Classe Teste:
public class TesteUniaoVetores {
public static void main(String[] args) {
UniaoVetores uv = new UniaoVetores(4, 3);
uv.gerarArraysAux(); uv.getA(); uv.getB(); uv.ordenarArrayAux(); uv.setArrayPrincipalSize(); uv.getPrincipal();
}
}