Como ordenar uma matriz?

Pessoal estou buscando formas de ordenar uma matriz em ordem crescente
Cheguei a essa, poderiam me dizer se existe uma lógica mais simples ?

public class ordenarMatriz {
    
    public static void main(String [] args)
    {
        int[][] matriz = {{18,20,14},{2,7,19},{21,2,1}}; //inicialização valores matriz
        
        int aux;
        
        
        
        for (int x=0; x < matriz.length ; x++)
        {
            for (int y=0; y < matriz[x].length ; y++)
            {
                
                for (int a=0; a < matriz.length; a++)
                {
                    for (int b=0; b < matriz[a].length ;b++)
                    {
                        if (matriz[a][b] >= matriz[x][y]) //ao final valores [x][y] == [2][2]  
                        {    
                            aux = matriz[x][y];
                            matriz[x][y] = matriz[a][b];
                            matriz[a][b] = aux;
                                
                        }
                    
                        
                        
                    }    
                    
                    
                }
                
            }
            
        }
        
        for (int i=0; i < matriz.length ; i++)
        {
        System.out.println("");
            
            for(int j = 0; j < matriz[i].length ; j++)
            {
            System.out.print(" "+matriz[i][j]);
            }
                                    
        }
    }
}

Pelo que vi da execução ( http://ideone.com/ETzSWF ), não há diferença entre a ordenação como matriz e como vetor, então por que ese código precisa ser ordenado como matriz?

Se você colocar como vetor, poderá usar um algoritmo de ordenação mais simples, como BubbleSort, InsertionSort, SelectionSort, etc. Mudar a representação posteriormente para matriz seria bem fácil.

Explique melhor o que quer fazer para podermos sugerir outras soluções.

Abraço.

1 curtida

Ah sim, so passando o tempo mesmo
tentando entender uma logica para ordenação sem metodos prontos
obrigado a atenção
Abraço

Vamos la

Uma matriz é um arranjo de números.

Vc quer ordenar o que?

Se ela for

9 1
0 4

O que vc espera quando ordenar?

1 9
0 4

Ou

0 1
4 9

?

Pq são bem diferentes

espero a terceira opção

no caso seria uma matriz em ordem crescente ??

se sim, como se chama ordenar dessa maneira?
seguindo seu exemplo:
0 4
1 9

Geralmente uma matriz é definida assim:

a b
c d

0,0 é a letra a, certo?

Cada linha é um array. A matriz 2x2 é na verdade:

{ { a , b }, { c, d } }

O que vc pode fazer:

  1. transforma a matriz n x n em um vetor n * m ( de qq jeito, soca numero la )
  2. ordena esse vetor ( ex Arrays.sort )
  3. Monta a matriz como vc quiser
1 curtida

ah sim, achei que cada coluna fosse um array

vou tentar aqui pra ver
obrigado

Tem um canal no YouTube que ensina lógica de programação e C# no detalhe, pode ser que te ajude.
Program Ação - YouTube