Ordenar 10 números....sem usar vetor

2 respostas
filipegpaulo
olá estou tentando ordenar 10 números com o seguinte "programa" [size=18](LÓGICA)[/size]:
int in1, in2, in3, in4, in5, in6, in7, in8, in9, in10;

int cont = 0;   
  
            while (cont < 10)   
            {   
                if (in1 > in2)   
                {   
                    continue;   
                       
                }   
                else { in1 = in2; }   
                //....................   
                if (in2 > in3)   
                {   
                    continue;   
  
                }   
                else { in2 = in3; }   
                //......................   
                if (in3 > in4)   
                {   
                    continue;   
  
                }   
                else { in3 = in4; }   
                //........................   
                if (in4 > in5)   
                {   
                    continue;   
  
                }   
                else { in4 = in5; }   
                //......................   
                if (in5 > in6)   
                {   
                    continue;   
  
                }   
                else { in5 = in6; }   
                //.......................   
                if (in6 > in7)   
                {   
                    continue;   
  
                }   
                else { in6 = in7; }   
                //......................   
                if (in7 > in8)   
                {   
                    continue;   
  
                }   
                else { in7 = in8; }   
                //........................   
                if (in8 > in9)   
                {   
                    continue;   
  
                }   
                else { in8 = in9; }   
                //........................   
                if (in9 > in10)   
                {   
                    continue;   
  
                }   
                else { in9 = in10; }   
                //.......................   
                if (in10 > in1)   
                {   
                    continue;   
                }   
                else { in10 = in1; }   
  
  
  
  
  
                cont = cont + 1;   
}   
  
System.out.println ("A seguencia é:" + in1 + ", " + in2 + ", " + in3 + ", " + in4 + ", " + in5 + ", " + in6 + ", " + in7 + ", " + in8 + ", " + in9 + ", " + in10);

[color=#444444][color=red]
más oque há de errado????
acho que é algo relacionado aos if.....
[/color][/color]

OBS:: Lembrando que não posso usar vetor....

2 Respostas

L

se vc vai trocar os valores de duas variaveis vc tem de ter uma terceira temporária…
tipo:

int i1 = 1, i2 = 2, i3;
i3=i1;
i1=i2;
i2=i3;
Giulliano

Até a terceira posição eu garanto que funciona.

public class Teste {

    private Integer in1 = 2, in2 = 3, in3 = 1, in4 = 4, in5 = 6, in6 = 5 , in7 = 8 , in8 = 9, in9 =7, in10 = 10;
    private Integer fin1, fin2, fin3, fin4, fin5, fin6, fin7, fin8, fin9, fin10;

    public static void main(String[] args) {
	new Teste().ordenar();
    }

    public void ordenar(){
	definirPrimeiraPosicao();
	System.out.println("Primeira posição > "+fin1);
	definirSegundaPosicao();
	System.out.println("Segunda posição > "+fin2);
	definirTerceiraPosicao();
	System.out.println("Terceira posição > "+fin3);
    }

    private void restart(){
	definirPrimeiraPosicao();
	definirSegundaPosicao();
    }
    
    private void definirPrimeiraPosicao() {
	if(fin1 == null){
	    fin1 = definirValorInicial(fin1);
	}
	if(in2 != null && fin1 > in2){
	    fin1 = in2;
	    definirPrimeiraPosicao();
	}
	if(in3 != null && fin1 > in3){
	    fin1 = in3;
	    definirPrimeiraPosicao();
	}
	if(in4 != null && fin1 > in4){
	    fin1 = in4;
	    definirPrimeiraPosicao();
	}
	if(in5 != null && fin1 > in5){
	    fin1 = in5;
	    definirPrimeiraPosicao();
	}
	if(in6 != null && fin1 > in6){
	    fin1 = in6;
	    definirPrimeiraPosicao();
	}
	if(in7 != null && fin1 > in7){
	    fin1 = in7;
	    definirPrimeiraPosicao();
	}
	if(in8 != null && fin1 > in8){
	    fin1 = in8;
	    definirPrimeiraPosicao();
	}
	if(in9 != null && fin1 > in9){
	    fin1 = in9;
	    definirPrimeiraPosicao();
	}
	if(in10 != null && fin1 > in10){
	    fin1 = in10;
	    definirPrimeiraPosicao();
	}

	if(fin1 == in1)in1 = null;
	if(fin1 == in2)in2 = null;
	if(fin1 == in3)in3 = null;
	if(fin1 == in4)in4 = null;
	if(fin1 == in5)in5 = null;
	if(fin1 == in6)in6 = null;
	if(fin1 == in7)in7 = null;
	if(fin1 == in8)in8 = null;
	if(fin1 == in9)in9 = null;
	if(fin1 == in10)in10 = null;
    }

    private void definirSegundaPosicao() {
	if(fin2 == null){
	    fin2 = definirValorInicial(fin2);
	}
	if(in2 != null && fin2 > in2){
	    fin2 = in2;
	    definirSegundaPosicao();
	}
	if(in3 != null && fin2 > in3){
	    fin2 = in3;
	    definirSegundaPosicao();
	}
	if(in4 != null && fin2 > in4){
	    fin2 = in4;
	    definirSegundaPosicao();
	}
	if(in5 != null && fin2 > in5){
	    fin2 = in5;
	    definirSegundaPosicao();
	}
	if(in6 != null && fin2 > in6){
	    fin2 = in6;
	    definirSegundaPosicao();
	}
	if(in7 != null && fin2 > in7){
	    fin2 = in7;
	    definirSegundaPosicao();
	}
	if(in8 != null && fin2 > in7){
	    fin2 = in8;
	    definirSegundaPosicao();
	}
	if(in9 != null && fin2 > in9){
	    fin2 = in9;
	    definirSegundaPosicao();
	}
	if(in10 != null && fin2 > in10){
	    fin2 = in10;
	    definirSegundaPosicao();
	}
	if(fin1 > fin2){
	    restart();
	}
	
	if(fin2 == in1)in1 = null;
	if(fin2 == in2)in2 = null;
	if(fin2 == in3)in3 = null;
	if(fin2 == in4)in4 = null;
	if(fin2 == in5)in5 = null;
	if(fin2 == in6)in6 = null;
	if(fin2 == in7)in7 = null;
	if(fin2 == in8)in8 = null;
	if(fin2 == in9)in9 = null;
	if(fin2 == in10)in10 = null;
    }

    private void definirTerceiraPosicao() {
	if(fin3 == null){
	    fin3 = definirValorInicial(fin3);
	}
	if(in2 != null && fin3 > in2){
	    fin3 = in2;
	    definirTerceiraPosicao();
	}
	if(in3 != null && fin3 > in3){
	    fin3 = in3;
	    definirTerceiraPosicao();
	}
	if(in4 != null && fin3 > in4){
	    fin3 = in4;
	    definirTerceiraPosicao();
	}
	if(in5 != null && fin3 > in5){
	    fin3 = in5;
	    definirTerceiraPosicao();
	}
	if(in6 != null && fin3 > in6){
	    fin3 = in6;
	    definirTerceiraPosicao();
	}
	if(in7 != null && fin3 > in7){
	    fin3 = in7;
	    definirTerceiraPosicao();
	}
	if(in8 != null && fin3 > in7){
	    fin3 = in8;
	    definirTerceiraPosicao();
	}
	if(in9 != null && fin3 > in9){
	    fin3 = in9;
	    definirTerceiraPosicao();
	}
	if(in10 != null && fin3 > in10){
	    fin3 = in10;
	    definirTerceiraPosicao();
	}
	if(fin1 > fin2){
	    restart();
	}else if(fin2 > fin3){
	    restart();
	}
	
	if(fin3 == in1)in1 = null;
	if(fin3 == in2)in2 = null;
	if(fin3 == in3)in3 = null;
	if(fin3 == in4)in4 = null;
	if(fin3 == in5)in5 = null;
	if(fin3 == in6)in6 = null;
	if(fin3 == in7)in7 = null;
	if(fin3 == in8)in8 = null;
	if(fin3 == in9)in9 = null;
	if(fin3 == in10)in10 = null;
    }

    private Integer definirValorInicial(Integer fin) {
	fin = in1;
	if(fin == null){
	    fin = in2;
	}
	if(fin == null){
	    fin = in3;
	}
	if(fin == null){
	    fin = in4;
	}
	if(fin == null){
	    fin = in5;
	}
	if(fin == null){
	    fin = in6;
	}
	if(fin == null){
	    fin = in7;
	}
	if(fin == null){
	    fin = in8;
	}
	if(fin == null){
	    fin = in9;
	}
	if(fin == null){
	    fin = in10;
	}
	return fin;
    }
}
Criado 4 de março de 2010
Ultima resposta 4 de mar. de 2010
Respostas 2
Participantes 3