Array em ordem decrescente

7 respostas
javatar
Boa Noite galera, estou com uma dificuldade em terminar um exercício. O que ele tem que fazer é: Receber uma seqüencia desse modo, 10-2-3-52-3-5, o usuário informa o número que desejar separado por hífens, e tem que pegar esses números e transformas em um vetor, até aqui eu consegui, e depois tenho que pegar esse números e deixar em ordem decrescente e crescente. Aqui está o código:
import javax.swing.JOptionPane;

public class Hifens {
	public static void main(String[] args){
		String ex = "",exi = "", exint = "";
		int contador = 0,aux = 0;
			
			ex = String.valueOf(JOptionPane.showInputDialog("Digite uma sêquencia de números separados por traço.\nExemplo: 10-20-2-3-4"));

				String[] b = ex.split("-");
				int[] ax = new int [b.length];
				int[] bx = new int [b.length+1];
				contador = ax.length;

			for (int a = 0; a<b.length; a++){
				exi += (b[a]+" ");
				ax[a] = Integer.parseInt(b[a]);
			}
		
			for (int one=0; one><=contador; one++){
				for (int two=one+1; two<=contador+1; two++){
					if(ax[one]<ax[two]){
						aux = ax[one];
						bx[two] = ax[one];
			
				}	}
			}
			

		JOptionPane.showMessageDialog(null,exi+"\n"+exint);
	}
}

Se alguém me ajuda ficarei muito grato, lembrando que não é válido usar o Array.sort.
>

7 Respostas

venomtotal

Bom, ao conseguir resolver um(ordem crescente ou decrescente), para conseguir sua contraparte, basta pegar o vetor e andar de tras pra frente

Já que não pode usar sort, busque no google sobre o metodo bolha de ordenação, apesar de ser o menos eficaz, é o mais simples de entender e implementar.
ex: http://www.guj.com.br/posts/list/34290.java
http://javafree.uol.com.br/topic-863560-Ordenacao-c-Metodo-Bolha.html

espero ter apontado um caminho

Venom

lugaid

A lógica de ordem crescente é mais ou menos assim…
ele vai percorrer o vetor diversas vezes, comparando sempre o primeiro com o segundo em diante, depois o segundo com o terceiro em diante, e por aí vai…
se o numero for menor, ele sempre vai trocar.

o que difere da ordem crescente pra descrescente é o sinal no if.

//vetor a[] com os dados
//variável de controle x

for(i = 0; i < a.length(); i++) {
	for(j = i; j < a.length(); j++) {
		if(a[i] > a[j]) {
			x = a[j];
			a[j] = a[i];
			a[i] = x;
		}
	}
}

Qualquer dúvida, pode falar!

javatar
Eu apliquei a seguinte lógica, mais ele exibe com alguns erros.
import javax.swing.JOptionPane;

public class Ex13 {
	public static void main(String[] args){
		String ex = "",exi = "", exint = "";
		int x = 0;
			
			ex = String.valueOf(JOptionPane.showInputDialog("Digite uma sêquencia de números separados por traço.\nExemplo: 10-20-2-3-4"));

				String[] b = ex.split("-");
				int[] ax = new int [b.length];

			for (int a = 0; a<b.length; a++){
				exi += (b[a]+" ");
				ax[a] = Integer.parseInt(b[a]);
			}
			
			for(int i = 0; i >< ax.length; i++) {  
   				 for(int j = i; j < ax.length; j++) {  
      				  	if(ax[i] > ax[j]) {  
          			  		x = ax[j];  
            			  		ax[j] = ax[i];  
            			  		ax[i] = x;
						exint += (ax[i]+" ");  
       					}  
    				}  
			}
			

		JOptionPane.showMessageDialog(null,exi+"\n"+exint);
	}
}
Ele está exibindo assim: [img]http://img3.imageshack.us/img3/6227/semttulobnl.jpg[/img]
lugaid

faz um for novo pra imprimir!!

javatar

não deu também =\

lugaid

como vc fez o for pra exibir ??

B

Nesse link é falado sobre ordenação, ve se auxilia.

http://www.guj.com.br/posts/list/224022.java

Criado 4 de novembro de 2010
Ultima resposta 9 de nov. de 2010
Respostas 7
Participantes 4