Ordenar Vetor de String

Pessoal estou querendo desenvolver uma aplicação onde receba N nomes e os armazene em dois vetores de mesmo tamanho x. Depois ordenalos em um novo vetor com o dobro da capacidade(2x) de forma ordenada. Partindo do pre-suposto que os n nomes do 1º vetor esta ordenado(a-z) e o 2º tambem(a-z) e juntando os dois permaneçam ordenados.

Detalhe queria fazer isso sem métodos de ordenação e nenhuma facilidade do java. bubbleSort QickSort essas coisas não podem!
Peço a ajuda de vocês sou iniciante em java e meu professor passaou esse problema para resolver.

segue abaixo meu codigo até o momento mais enganchei justo na parte de ordenar

import java.util.*;

public class OrdenarString {
	
	public static void main(String[] args) {
	Scanner ler = new Scanner(System.in);
	
	int n = 0;
	System.out.println("Digite o tamanho dos vetores");
	n = ler.nextInt();
	int m = (n*2);
	String[] vetor1 = new String[n];
	String[] vetor2 = new String[n];
	String[] vetor3 = new String[m];
	
	int b = 0;
	
	//ENTRANDO COM O PRIMEIRO VETOR DE STRING
	for(int i=0;i<vetor1.length;i++){
		System.out.println("Digite uma palavra de tamanho");
		vetor1[i]=ler.next();
	}
	//ENTRANDO COM O SEGUNDO VETOR DE STRING
	for(int i=0;i<vetor2.length;i++){
		System.out.println("Digite uma palavra de tamanho");
		vetor2[i]=ler.next();
	}
	
	//PREENCHENDO E ORDENANDO VETOR3 DE STRING
	for(int i=0;i<vetor3.length;i++){
			
			for(int a = 0;a<vetor1.length - 1; a++){
				
				int comparacao1 = vetor1[a].compareToIgnoreCase(vetor1[a+1]);
				
				
				if(comparacao1 < 0){
					vetor3[i] = vetor1[a];
				}
				
				else if(comparacao1 > 0){
					vetor3[i]= vetor1[a+1];
				}
				
				else {
				vetor3[i]=vetor1[a];	
				}
	
			}
	}
	
	
	
	//IMPRIMINDO VETOR 3 NA TELA JA ORDENADO
	
	
	for(int i=0;i<vetor3.length-2;i++){ 
		System.out.println("[ "+vetor3[i]+" ]");
	}
	
	
	//--------------------------------------
	
	}

}

     

Esta incompleto mais dai não sei passar
Dicas são muito bem vindas…

Antecipadamente agradeço pelo a atenção de todos!!!

Se ambos os vetores estão ordenados, não é preciso (e você não deve) usar bubblesort, quicksort ou “bobosort” como você está tentando fazer. Você precisa fazer uma outra coisa bem mais simples.

A dica é: digamos que você tem duas coleções de jornais, A ou B, ambas ordenadas por número. Você precisa criar uma terceira coleção, que é a combinação dessas duas. Como é que você faz?

a) Crie uma terceira coleção C, vazia
b) Olhe para as duas coleções de jornais. Veja qual delas é que tem o número do jornal menor. Você então escolhe esse jornal, tira dessa coleção (A ou B), e então põe na coleção C.
c) Repita isso até que acabem as duas coleções.

Agora passe essa ideia para vetores.

Bom vc pode usarr o Arrays.sort(array)

ou seja crie um terceiro vetor , adicione todos os dados eh estilize o método acima .

Opa amigão!
Arrays.sort(array) tambem não pode estou abstraindo a dica de meu amigo acima!
Logo logo posto se consigui ou não!!
de qualquer forma fico no aguardo por mais dicas
Obrigado amigos! :smiley:

//PREENCHENDO E ORDENANDO VETOR 3
	int a = 0;
        for(int i=0;i<vetor3.length - 1;i++){
		
		int aux = vetor1[a].compareToIgnoreCase(vetor2[a]);
			
			if (aux < 0){
				vetor3[i]=vetor1[a];
				vetor3[i+1]=vetor2[a];
				a++;
			}
			else if (aux>0){
				vetor3[i]=vetor2[a];
				vetor3[i+1]=vetor1[a];
				a++;
			}
			else {
				vetor3[i] = vetor1[a];
				vetor3[i+1] = vetor1[a];
				a++;
			}
				
	}

Pessoal sabem me dizer onde estou errando ??
Me parece que a variavel a ta estourando o vetor1 ou 2
Não sei fazer ela não passar do tamanho desses vetores

esse é o erro
Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 3
at Parte2.OrdenarString.main(OrdenarString.java:5)

Muito obrigado pela atenção!!

Amigo, você ainda não parou para pensar. Você precisa de três variáveis:
Uma para indicar a posição atual no vetor 1;
Uma para indicar a posição atual no vetor 2;
E mais uma para indicar a posição atual no vetor 3 (destino).

Você só incrementa uma variável para tirar do vetor 1 ou 2, ou para acrescentar no vetor 3. Você está usando apenas uma variável (a).
OK?

Complementando apenas, o erro que ocorreu com você: java.lang.ArrayIndexOutOfBoundsException: 3
É devido ao fato de estar “estourando” o limite do seu vetor, provavelmente ele está sendo criado com 3 posições mas tenta acessar um 4ª posição. Apenas lembrando aquele pessoal esquecido, Arrays (vetores) começam sempre na posição 0.

Abraços! :slight_smile:

        int a =0;
	int b = 0;
	
	for(int i=0;i<vetor3.length ;i++){
		//aux = vetor1[a].compareToIgnoreCase(vetor2[b]);		
		if (a == n){
			vetor3[i] = vetor2[b];
			b++;
		}
		
		else if(b == n){ 
			vetor3[i] = vetor1[a];
				a++;
		}
		else {
			if(vetor1[a].compareToIgnoreCase(vetor2[b])<0){
				vetor3[i] = vetor1[a];
				a++;
		}
		
		else {
			if (vetor1[a].compareToIgnoreCase(vetor2[b])>0);
				vetor3[i] = vetor2[b];
				b++;
		}
		}
	}	
	//IMPRIMINDO VETOR 3 NA TELA JA ORDENADO
	for(int i=0;i<vetor3.length;i++){ 
		System.out.println("[ "+vetor3[i]+" ]");
	}
	

Aee galera consigui muito obrigado
Vlw ae dessa vez deu certo !!! Abração

Blz

Se eu tivesse dito que o algoritmo tem um nome levemente parecido com “merge” será que ele conseguiria achar algo na Internet?