-> Matriz de numeros ordenada en espiral | JAVA - SAAT-WEBS

Breaking

CODIGOS

JAVA

-> Matriz de numeros ordenada en espiral | JAVA

 



Aprende como hacer el recorrido de una matriz en espiral de forma ordenada en java

Explico como mostrar la matriz de forma especifica en: Matriz en espiral por lo tanto ya no seré tan especifico en esta explicación.

A continuación se muestra como ordenar una matriz y mostrarla en espiral en java.-

El código esta comentado por ello recomiendo simplemente copiarlo a tu IDE favorito y aprender viendo como funciona el código.

import java.util.Scanner;//importamos el Scanner
public class matriz_ordeanda_en_Espiral{
    public static void main (String []args){
       //inicializamos el Scanner
        Scanner in=new Scanner(System.in);
        int n;
        System.out.println("dime valores para na matriz n*n");
        n=in.nextInt();
         int matriz2[][]=new int[n][n];
        //creamos la matriz n*n
        int matriz[][]=new int[n][n];
        //creamos arreglo auxiliar
        int v[]=new int[n*n];
        //contador para el vector
        int  contador=0;
        //contador para la espiral
        int cont=0;
        //damos valores aleatorios a la matriz
        for(int i=0;i<=n-1;i++){
            for(int j=0;j<=n-1;j++){
                matriz[i][j]= (int)(Math.random()*100);
            }
        }    
        //mostramos la matriz
        for(int i=0;i<=n-1;i++){
            for(int j=0;j<=n-1;j++){
                System.out.print("["+matriz[i][j]+"]");              
            }
            System.out.println(" ");
        }
        //damos los valores de la matriz al vector auxiliar
       for(int i=0;i<=n-1;i++){
            for(int j=0;j<=n-1;j++){
                v[contador]= matriz[i][j];
                contador++;
            }           
        }  
        //ordenamos el vector por el metodo de la burbuja
       for(int i=0;i<=(n*n)-1;i++){
            for(int j=0;j<=(n*n)-2;j++){
                    if(v[j]<v[j+1]){
                    int aux=v[j];
                    v[j]=v[j+1];
                    v[j+1]=aux;
                }
                }
       }             
      //variables
      int filainicio=0;
      int filafinal=n-1;
      int colinicio=0;
      int colfinal=n-1;
      int c=0;
      int r=0;     

       //la variable r servirá para poder darle los valores del vector a la matriz

      while(c<(n*n)){
       for(int j=colinicio;j<=colfinal;j++){
            //fila superior derecha
            matriz[filainicio][j]=v[r];
            c++;
            r++;       
        }
       filainicio++;       
       for(int i=filainicio;i<=colfinal;i++){
            //columna derecha hacia abajo
            matriz[i][colfinal]=v[r];              
            c++;
            r++;        
        }      
        colfinal--;
       for(int j=colfinal;j>=colinicio;j--){
            //fila inferior hacia la izquierda
            matriz[filafinal][j]=v[r];
            
            c++;
            r++;
        }
        filafinal--;    
       for(int i=filafinal;i>=filainicio;i--){
              //columna derecha hacia arriba
            matriz[i][colinicio]=v[r];             
            c++;
            r++;
            }
        colinicio++;
    }
     System.out.println("ordenada en espoiral seria ");
    //mostramos la matriz ordenada
    for(int i=0;i<=n-1;i++){
            for(int j=0;j<=n-1;j++){
                System.out.print("["+matriz[i][j]+"]");              
            }
            System.out.println(" ");
        }
   }
}

Uso cookies para darte un mejor servicio.
Mi sitio web utiliza cookies para mejorar tu experiencia. Acepto Leer más
Copied!