Ordenar array bidimensional

Iniciado por KaRaLLo, 30 Enero 2012, 17:48 PM

0 Miembros y 1 Visitante están viendo este tema.

KaRaLLo

Teniendo este array :


456     234     593     616
24       861     245     154
548     21       552     101
290     468     691     348

Necesito ordenarlo por columnas se me occurio este método pero el array se sale del rango :


Código (java) [Seleccionar]
for (int u = 0; u < notas.length; u++) {
for (int i = 0; i < nombres.length; i++) {
for (int j = 0; j < nombres.length; j++) {
if(notas[i][u] > notas[j][u]){
int aux=notas[i][u];
int aux2=notas[j][u];
notas[i][u]=aux2;
notas[j][u]=aux;
}
}
}
}


Un saludo
Los programadores escriben código aunque sepan que no debería funcionar, pero  de todas formas lo intentan, como recompilar todo, después de eso, dios sabe porqué, funciona

bewa

Código (java) [Seleccionar]


package elhackerordenararraybi;


public class ElhackerOrdenarArrayBi {


   public static void main(String[] args) {
       // TODO code application logic here
       
       int numeros[][]= new int [4][4];
       int columna=0;
       int var_fila=0;
       int var_fila2=0;
       int temp=0;
       numeros[0][0]=456;
       numeros[0][1]=24;
       numeros[0][2]=548;
       numeros[0][3]=290;
       
       numeros[1][0]=234;
       numeros[1][1]=861;
       numeros[1][2]=21;
       numeros[1][3]=468;
       
       numeros[2][0]=593;
       numeros[2][1]=245;
       numeros[2][2]=552;
       numeros[2][3]=691;
       
       numeros[3][0]=616;
       numeros[3][1]=154;
       numeros[3][2]=101;
       numeros[3][3]=384;

       //imprimimos array sin ordenar

       System.out.println("----ARRAY SIN ORDENAR----");
       while(var_fila <4)
       {
        while(columna<4)
            {
                 System.out.print("  "+numeros[columna][var_fila]+"  ");
                 columna++;
             }
                System.out.println();
                columna=0;
                var_fila++;
       }
       
       var_fila=0;
       columna=0;

       //ordenamos el array

       while(columna<4)
       {
           while(var_fila<3)
           
           {

              while(var_fila2<3)
              {
                  if(numeros[columna][var_fila]>numeros[columna][var_fila2+1]&& var_fila2>=var_fila)
                  {
                      temp=numeros[columna][var_fila];
                       numeros[columna][var_fila]=numeros[columna][var_fila2+1];
                       numeros[columna][var_fila2+1]=temp;

                  }
                  var_fila2++;
              }
              var_fila2=0;
              var_fila++;
           }
          var_fila2=0;
          var_fila=0;
          columna++;
       }
       columna=0;
       var_fila=0;
       
       //Imprimimos el array
       System.out.println("----IMPRIMIMOS EL ARRAY ORDENADO--------");
       while(var_fila <4){
        while(columna<4){
         System.out.print("  "+numeros[columna][var_fila]+"  ");
         columna++;
        }
        System.out.println();
        columna=0;
        var_fila++;
       }
   }
}

:rolleyes: :rolleyes: :rolleyes: :rolleyes:

KaRaLLo

Muchisimas gracias bewa, pero me desanimo al ver esto xDD llevo 3 días rayandome la cabeza y nada
Los programadores escriben código aunque sepan que no debería funcionar, pero  de todas formas lo intentan, como recompilar todo, después de eso, dios sabe porqué, funciona

bewa

Es que es difícil entender el código de otro. Por lo menos para mí que estoy empezando xD.

Pero tampoco creo que sea muy necesarios estos ejercicios a parte de para coger manejo. Dile a tu profesor que empiece ya con las clases y la interfaz gráfica si ya teneis un buen manejo. Seguir aumentando la dificultad de estos ejercicios con bucles dentro de bucles me parece de locos y no se avanza.

jhonatanAsm

#4
bajando el code de la declaracion del array numeros:

int valores[]={456     ,234,593, 616,24,  861   ,  245   ,  154,548 ,  21,       552   , 101,290    , 468  ,   691,348};

int c=0;

for(int a=0;a<4;a++)
  for(int b=0;b<4;b++)
       numeros(a)(b)=valores[c++];// cambia los parentesis por corchetes


si se sale de rango verifica el tamaño de tus matrices en tiempo de compilacion.salu2
mi primer lenguaje fue ensamblador, tengo 60 años, y no creo que haya sido un error.

- La mayor complejidad de todas es hacer complejo algo que no lo es.

- El inteligente no es aquel que lo sabe todo sino aquel que sabe utilizar lo poco que sabe.

seraff

al estar buscando pues mejor me puse hacerlo espero que les ayude
y que me pueda ayudar ayudándolos saludos

public static void main(String seraff[]) {
        String nombre[][] = {{"90", "zavala", "40", "50", "20"},
                             {"10", "juan", "20", "25", "10"},
                             {"90", "blanko", "90", "90", "90"},
                             {"99", "andres", "99", "99", "99"}};
        String aux = "";
      for(byte k=0;k<4;k++){
        for (byte i = 0; i <3; i++) {
                if (nombre[1].compareTo(nombre[i+1][1]) > 0) {
                       for (byte j = 0; j < 5; j++) {
                            aux = nombre[j];
                            nombre[j] = nombre[i + 1][j];
                            nombre[i + 1][j] = aux;
                    }
                }
            }}

        aux="";
        for (byte i = 0; i < 4; i++) {
    for(byte j=0;j<5;j++){
    aux+=nombre[j]+"  ";
    }
           
aux+="\n";
        }
        System.out.println(aux);

    }
}



ITM