Duvida de bubble sort [Resolvido]

Fiz este bubble e queria saber como poderia eliminar suas duplicidades, tipo 25 e 25, qualquer ajuda ou sugestão é bem vinda, porque estou sem ideia:

public class Bubblesort{

public void Ordenar(int vetor[])
{ 
int temp;
boolean alterado = true;

for(int i=0; i<vetor.length; i++)
System.out.print(vetor);

System.out.println("");
System.out.println("----------");

while (alterado) {
temp = 0;
alterado = false;
for (int j = 0; j < vetor.length - 1; j++) {
if (vetor[j] > vetor[j + 1]) {
temp = vetor[j + 1];
vetor[j + 1] = vetor[j];
vetor[j] = temp;
alterado = true;
} 
System.out.println(""); 
for(int i=0; i<vetor.length; i++)
System.out.print(vetor);


}
}
}


}

public class Testabubblesort
{
public static void main(String[]args)
{
Bubblesort b1; 
b1 = new Bubblesort();

int vetor[] = { 25, 57, 48, 37, 12, 92, 86, 33, 25, 57, 25, 12, 86, 12, 12, 25, 33, 37, 48};
b1.Ordenar(vetor);
}
} 

Olá Conan,

1 - Ordene o array com o seu bubble sort (na verdade não precisa ordenar antes de fazer o que está citado abaixo)
2 - Percorra o array encontrando as duplicatas e vá contanto quantas ocorrências (das cópias) existem.
3 - Crie um novo array, usando como tamanho o tamanho do array original menos a quantidade de ocorrências.
4 - Por fim, faça o mesmo algoritmo do passo 2. Quando um dado elemento não for uma duplicata vc insere no novo array.

Você vai precisar manter alguns contadores (além dos “contadores” dos laços) para gerenciar o seu algoritmo.

[]´s

apenas uma segestão, não sei se é a mais eficiente!

Voce pode ordenar o array normalmente depois percorre-lo comparando um elemento com o seguinte, caso seja igual você substitui por algum valor nulo (pode ser NULL) e atualiza um contador, após isso crie um novo array de com tamanha (n - i ) onde n é o tamanho do array antigo e i a quant de numeros repetidos, e entoa apenas copie os numeros que sobraram no array antigo para o novo.

Poderia dar um exemplo (não tem que ser do exercicio necessariamente ) sobre como fazer exatamente isso.

não me atentei muito aos detalhes de sintaxe, mas apenas para exemplificar a logica

int[] retiraRepetidos (int[] a)
{
\ordena utilizando o bubble sort
bubble(a);
int cont = 0; \coltrole de repetidos

for(int i = 0; i < a.length-1; i++)

{

//defini -1 como um valor que é nulo
if (a[i] == a[i+1] { a[i] = -1; cont++;}
}
if(count = 0) return a;

int j =0;
int[] resp = new int[count];
for (int i = 0; i < a; i ++)
{
if (a[i] != 1) { resp[j] - a[i]; j++;}

}

return resp;
}

espero que tenha ajudado! :smiley:

Obrigado consegui resolver o problema !!