Programa Php para ordenar la array por filas y por columnas

Dada una array xn. El problema es ordenar la array por filas y por columnas.
Ejemplos: 
 

Input : mat[][] = { {4, 1, 3},
                    {9, 6, 8},
                    {5, 2, 7} }
Output : 1 3 4
         2 5 7
         6 8 9

Input : mat[][] = { {12, 7, 1, 8},
                    {20, 9, 11, 2},
                    {15, 4, 5, 13},
                    {3, 18, 10, 6} } 
Output : 1 5 8 12
         2 6 10 15
         3 7 11 18
         4 9 13 20

Enfoque: Los siguientes son los pasos:
 

  1. Ordena cada fila de la array.
  2. Obtener la transpuesta de la array.
  3. Nuevamente ordene cada fila de la array.
  4. Nuevamente obtenga la transposición de la array.

Algoritmo para obtener la transpuesta de la array: 
 

for (int i = 0; i < n; i++) {
    for (int j = i + 1; i < n; i++) {
        int temp = mat[i][j];
        mat[i][j] = mat[j][i];
        mat[j][i] = temp;
    }
}

PHP

<?php
// PHP implementation to sort 
// the matrix row-wise and 
// column-wise
$MAX_SIZE = 10;
  
// function to sort each
// row of the matrix
function sortByRow(&$mat, $n)
{
    for ($i = 0; $i < $n; $i++)
  
        // sorting row number 'i'
        sort($mat[$i]);
}
  
// function to find
// transpose of the matrix
function transpose(&$mat, $n)
{
    for ($i = 0; $i < $n; $i++)
    {
        for ($j = $i + 1; 
             $j < $n; $j++) 
        {
            // swapping element at index (i, j) 
            // by element at index (j, i)
            $t = $mat[$i][$j];
            $mat[$i][$j] = $mat[$j][$i];
            $mat[$j][$i] = $t;
        }
    }
}
  
// function to sort 
// the matrix row-wise
// and column-wise
function sortMatRowAndColWise(&$mat, $n)
{
    // sort rows of mat[][]
    sortByRow($mat, $n);
  
    // get transpose of mat[][]
    transpose($mat, $n);
  
    // again sort rows of mat[][]
    sortByRow($mat, $n);
  
    // again get transpose of mat[][]
    transpose($mat, $n);
}
  
// function to print the matrix
function printMat(&$mat, $n)
{
    for ($i = 0; $i < $n; $i++) 
    {
        for ($j = 0; $j < $n; $j++)
            echo $mat[$i][$j] . " ";
        echo "
";
    }
}
  
// Driver Code
$mat = array(array( 4, 1, 3 ),
             array( 9, 6, 8 ),
             array( 5, 2, 7 ));
$n = 3;
  
echo "Original Matrix:
";
printMat($mat, $n);
  
sortMatRowAndColWise($mat, $n);
  
echo "
Matrix After Sorting:
";
printMat($mat, $n);
  
// This code is contributed 
// by ChitraNayal
?>

Producción: 
 

Original Matrix:
4 1 3
9 6 8
5 2 7

Matrix After Sorting:
1 3 4
2 5 7
6 8 9

Complejidad temporal: O(n 2 log 2 n). 
Espacio Auxiliar: O(1).
Consulte el artículo completo sobre Ordenar la array por filas y por columnas para obtener más detalles.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *