Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Java => Mensaje iniciado por: KaRaLLo en 30 Enero 2012, 17:48 PM

Título: Ordenar array bidimensional
Publicado por: KaRaLLo en 30 Enero 2012, 17:48 PM
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
Título: Re: Ordenar array bidimensional
Publicado por: bewa en 1 Febrero 2012, 02:02 AM
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:
Título: Re: Ordenar array bidimensional
Publicado por: KaRaLLo en 1 Febrero 2012, 18:52 PM
Muchisimas gracias bewa, pero me desanimo al ver esto xDD llevo 3 días rayandome la cabeza y nada
Título: Re: Ordenar array bidimensional
Publicado por: bewa en 1 Febrero 2012, 20:29 PM
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.
Título: Re: Ordenar array bidimensional
Publicado por: jhonatanAsm en 2 Febrero 2012, 23:25 PM
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
Título: Re: Ordenar array bidimensional
Publicado por: seraff en 1 Abril 2013, 02:36 AM
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