Foro de elhacker.net

Programación => 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
  1. for (int u = 0; u < notas.length; u++) {
  2. for (int i = 0; i < nombres.length; i++) {
  3. for (int j = 0; j < nombres.length; j++) {
  4. if(notas[i][u] > notas[j][u]){
  5. int aux=notas[i][u];
  6. int aux2=notas[j][u];
  7. notas[i][u]=aux2;
  8. notas[j][u]=aux;
  9. }
  10. }
  11. }
  12. }

Un saludo


Título: Re: Ordenar array bidimensional
Publicado por: bewa en 1 Febrero 2012, 02:02 am
Código
  1.  
  2. package elhackerordenararraybi;
  3.  
  4.  
  5. public class ElhackerOrdenarArrayBi {
  6.  
  7.  
  8.    public static void main(String[] args) {
  9.        // TODO code application logic here
  10.  
  11.        int numeros[][]= new int [4][4];
  12.        int columna=0;
  13.        int var_fila=0;
  14.        int var_fila2=0;
  15.        int temp=0;
  16.        numeros[0][0]=456;
  17.        numeros[0][1]=24;
  18.        numeros[0][2]=548;
  19.        numeros[0][3]=290;
  20.  
  21.        numeros[1][0]=234;
  22.        numeros[1][1]=861;
  23.        numeros[1][2]=21;
  24.        numeros[1][3]=468;
  25.  
  26.        numeros[2][0]=593;
  27.        numeros[2][1]=245;
  28.        numeros[2][2]=552;
  29.        numeros[2][3]=691;
  30.  
  31.        numeros[3][0]=616;
  32.        numeros[3][1]=154;
  33.        numeros[3][2]=101;
  34.        numeros[3][3]=384;
  35.  
  36.        //imprimimos array sin ordenar
  37.  
  38.        System.out.println("----ARRAY SIN ORDENAR----");
  39.        while(var_fila <4)
  40.        {
  41.         while(columna<4)
  42.             {
  43.                  System.out.print("  "+numeros[columna][var_fila]+"  ");
  44.                  columna++;
  45.              }
  46.                 System.out.println();
  47.                 columna=0;
  48.                 var_fila++;
  49.        }
  50.  
  51.        var_fila=0;
  52.        columna=0;
  53.  
  54.        //ordenamos el array
  55.  
  56.        while(columna<4)
  57.        {
  58.            while(var_fila<3)
  59.  
  60.            {
  61.  
  62.               while(var_fila2<3)
  63.               {
  64.                   if(numeros[columna][var_fila]>numeros[columna][var_fila2+1]&& var_fila2>=var_fila)
  65.                   {
  66.                       temp=numeros[columna][var_fila];
  67.                        numeros[columna][var_fila]=numeros[columna][var_fila2+1];
  68.                        numeros[columna][var_fila2+1]=temp;
  69.  
  70.                   }
  71.                   var_fila2++;
  72.               }
  73.               var_fila2=0;
  74.               var_fila++;
  75.            }
  76.           var_fila2=0;
  77.           var_fila=0;
  78.           columna++;
  79.        }
  80.        columna=0;
  81.        var_fila=0;
  82.  
  83.        //Imprimimos el array
  84.        System.out.println("----IMPRIMIMOS EL ARRAY ORDENADO--------");
  85.        while(var_fila <4){
  86.         while(columna<4){
  87.          System.out.print("  "+numeros[columna][var_fila]+"  ");
  88.          columna++;
  89.         }
  90.         System.out.println();
  91.         columna=0;
  92.         var_fila++;
  93.        }
  94.    }
  95. }
  96.  
: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