Sort the matrix row-wise and column-wise

06 May, 2021
Given a n x n matrix. The problem is to sort the matrix row-wise and column wise.Examples:  
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
 
Approach: Following are the steps: 
Sort each row of the matrix.Get transpose of the matrix.Again sort each row of the matrix.Again get transpose of the matrix.
Sort each row of the matrix.
Get transpose of the matrix.
Again sort each row of the matrix.
Again get transpose of the matrix.
Algorithm for sorting each row of matrix using C++ STL sort():  
for (int i = 0 ; i < n; i++)
    sort(mat[i], mat[i] + n);
Algorithm for getting transpose of the matrix:  
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;
    }
}
 
C++
Java
Python 3
C#
PHP
Javascript
// C++ implementation to sort the matrix row-wise// and column-wise#include <bits/stdc++.h> using namespace std; #define MAX_SIZE 10 // function to sort each row of the matrixvoid sortByRow(int mat[MAX_SIZE][MAX_SIZE], int n){    for (int i = 0; i < n; i++)         // sorting row number 'i'        sort(mat[i], mat[i] + n);} // function to find transpose of the matrixvoid transpose(int mat[MAX_SIZE][MAX_SIZE], int n){    for (int i = 0; i < n; i++)        for (int j = i + 1; j < n; j++)             // swapping element at index (i, j)            // by element at index (j, i)            swap(mat[i][j], mat[j][i]);} // function to sort the matrix row-wise// and column-wisevoid sortMatRowAndColWise(int mat[MAX_SIZE][MAX_SIZE],                                               int 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 matrixvoid printMat(int mat[MAX_SIZE][MAX_SIZE], int n){    for (int i = 0; i < n; i++) {        for (int j = 0; j < n; j++)            cout << mat[i][j] << " ";        cout << endl;    }} // Driver program to test aboveint main(){    int mat[MAX_SIZE][MAX_SIZE] = { { 4, 1, 3 },                            { 9, 6, 8 },                            { 5, 2, 7 } };    int n = 3;     cout << "Original Matrix:\n";    printMat(mat, n);     sortMatRowAndColWise(mat, n);     cout << "\nMatrix After Sorting:\n";    printMat(mat, n);     return 0;}
// Java implementation to sort the// matrix row-wise and column-wiseimport java.util.Arrays; class GFG{    static final int MAX_SIZE=10;         // function to sort each row of the matrix    static void sortByRow(int mat[][], int n)    {        for (int i = 0; i < n; i++)                 // sorting row number 'i'            Arrays.sort(mat[i]);    }         // function to find transpose of the matrix    static void transpose(int mat[][], int n)    {        for (int i = 0; i < n; i++)            for (int j = i + 1; j < n; j++)                {                // swapping element at index (i, j)                // by element at index (j, i)                int temp=mat[i][j];                mat[i][j]=mat[j][i];                mat[j][i]=temp;                }    }         // function to sort the matrix row-wise    // and column-wise    static void sortMatRowAndColWise(int mat[][],int 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    static void printMat(int mat[][], int n)    {        for (int i = 0; i < n; i++) {            for (int j = 0; j < n; j++)                System.out.print(mat[i][j] + " ");            System.out.println();        }    }         // Driver code    public static void main (String[] args)    {        int mat[][] = { { 4, 1, 3 },                        { 9, 6, 8 },                        { 5, 2, 7 } };        int n = 3;             System.out.print("Original Matrix:\n");        printMat(mat, n);             sortMatRowAndColWise(mat, n);             System.out.print("\nMatrix After Sorting:\n");        printMat(mat, n);    }} // This code is contributed by Anant Agarwal.
# Python 3 implementation to# sort the matrix row-wise# and column-wiseMAX_SIZE = 10 # function to sort each# row of the matrixdef sortByRow(mat, n):    for i in range (n):                 # sorting row number 'i'        for j in range(n-1):            if mat[i][j] > mat[i][j + 1]:                temp = mat[i][j]                mat[i][j] = mat[i][j + 1]                mat[i][j + 1] = temp # function to find# transpose of the matrixdef transpose(mat, n):    for i in range (n):        for j in range(i + 1, n):             # 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-wisedef 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 matrixdef printMat(mat, n):    for i in range(n):        for j in range(n):            print(str(mat[i][j] ), end = " ")        print();         # Driver Codemat = [[ 4, 1, 3 ],       [ 9, 6, 8 ],       [ 5, 2, 7 ]]n = 3 print("Original Matrix:")printMat(mat, n) sortMatRowAndColWise(mat, n) print("\nMatrix After Sorting:")printMat(mat, n) # This code is contributed# by ChitraNayal
// C# implementation to sort the// matrix row-wise and column-wiseusing System; class GFG{    // function to sort each    // row of the matrix    static void sortByRow(int [,]mat,                          int n)    {             // sorting row number 'i'    for (int i = 0; i < n ; i++)        {        for(int j = 0;                j < n - 1; j++)        {            if(mat[i, j] > mat[i, j + 1])            {                             var temp = mat[i, j];                mat[i, j] = mat[i, j + 1];                mat[i, j + 1] = temp;                             }        }        }    }         // function to find transpose    // of the matrix    static void transpose(int [,]mat,                          int n)    {        for (int i = 0; i < n; i++)            for (int j = i + 1;                     j < n; j++)                {                                         // swapping element at                    // index (i, j) by                    // element at index (j, i)                    var temp = mat[i, j];                    mat[i, j] = mat[j, i];                    mat[j, i] = temp;                }    }         // function to sort    // the matrix row-wise    // and column-wise    static void sortMatRowAndColWise(int [,]mat,                                     int 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    static void printMat(int [,]mat, int n)    {        for (int i = 0; i < n; i++)        {            for (int j = 0; j < n; j++)                Console.Write(mat[i, j] + " ");            Console.Write("\n");        }    }         // Driver code    public static void Main ()    {        int [,]mat = {{4, 1, 3},                      {9, 6, 8},                      {5, 2, 7}};        int n = 3;             Console.Write("Original Matrix:\n");        printMat(mat, n);             sortMatRowAndColWise(mat, n);             Console.Write("\nMatrix After Sorting:\n");        printMat(mat, n);    }} // This code is contributed// by ChitraNayal
<?php// PHP implementation to sort// the matrix row-wise and// column-wise$MAX_SIZE = 10; // function to sort each// row of the matrixfunction sortByRow(&$mat, $n){    for ($i = 0; $i < $n; $i++)         // sorting row number 'i'        sort($mat[$i]);} // function to find// transpose of the matrixfunction 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-wisefunction 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 matrixfunction printMat(&$mat, $n){    for ($i = 0; $i < $n; $i++)    {        for ($j = 0; $j < $n; $j++)            echo $mat[$i][$j] . " ";        echo "\n";    }} // Driver Code$mat = array(array( 4, 1, 3 ),             array( 9, 6, 8 ),             array( 5, 2, 7 ));$n = 3; echo "Original Matrix:\n";printMat($mat, $n); sortMatRowAndColWise($mat, $n); echo "\nMatrix After Sorting:\n";printMat($mat, $n); // This code is contributed// by ChitraNayal?>
<script>// Javascript implementation to sort the// matrix row-wise and column-wise         let  MAX_SIZE=10;         // function to sort each row of the matrix    function sortByRow(mat,n)    {        for (let i = 0; i < n; i++)                   // sorting row number 'i'            mat[i].sort(function(a,b){return a-b;});    }         // function to find transpose of the matrix    function transpose(mat,n)    {        for (let i = 0; i < n; i++)            for (let j = i + 1; j < n; j++)                {                // swapping element at index (i, j)                // by element at index (j, i)                let temp=mat[i][j];                mat[i][j]=mat[j][i];                mat[j][i]=temp;                }    }         // 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 (let i = 0; i < n; i++) {            for (let j = 0; j < n; j++)                document.write(mat[i][j] + " ");            document.write("<br>");        }    }         // Driver code    let mat = [[ 4, 1, 3 ],       [ 9, 6, 8 ],       [ 5, 2, 7 ]];         let n = 3;    document.write("Original Matrix:<br>");    printMat(mat, n);           sortMatRowAndColWise(mat, n);           document.write("\nMatrix After Sorting:<br>");    printMat(mat, n);    // This code is contributed by avanitrachhadiya2155</script>
Output:  
Original Matrix:
4 1 3
9 6 8
5 2 7

Matrix After Sorting:
1 3 4
2 5 7
6 8 9
Time Complexity: O(n2log2n). Auxiliary Space: O(1). 
ukasp
avanitrachhadiya2155
Matrix
Sorting
Sorting
Matrix
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.