 Open in App
Not now

# Sort a Matrix in all way increasing order

• Difficulty Level : Basic
• Last Updated : 19 Aug, 2022

Given a square matrix of order N*N having distinct elements, the task is to sort given matrix in such a way that its rows, columns and both diagonals (diagonal and anti-diagonal) are in increasing order.

Examples:

```Input : arr = {1, 4, 2,
3, 5, 6,
9, 7, 8}
Output :{1, 2, 3,
4, 5, 6,
7, 8, 9}

Input : arr = {0, 4,
5, 2}
Output :{0, 2,
4, 5}```

Sorting any matrix in a way that its rows, columns and main diagonal are in increasing order is easy. If we consider matrix elements in sequence according to row-major order and sort the sequence, we get the desired result.

```Example: arr : {1, 2
3, 4}
Rows in increasing order:  {1,2} and {3,4}
Columns in increasing order:  {1,3} and {2,4}
Diagonal in increasing order:  {1,4}
Anti-diagonal in increasing order:  {2,3}```

Implementation:

## CPP

 `// C++ program to sort matrix in all-way` `#include` `using` `namespace` `std;` `#define N 3`   `// Sorts a matrix in increasing order` `void` `sortAllWay(``int` `arr[][N])` `{` `    ``// Consider matrix elements (in row major` `    ``// order) and sort the sequence.` `    ``int` `*ptr = (``int` `*)arr;` `    ``sort(ptr, ptr+N*N);` `}`   `// driver program` `int` `main()` `{` `    ``int` `arr[N][N] = {1, 0, 3,` `                     ``2, 5, 6,` `                     ``9, 4, 8};` `    ``sortAllWay(arr);`     `    ``// print resultant matrix` `    ``for` `(``int` `i=0; i

## Java

 `// Java program to sort matrix in all-way` `import` `java.util.*;`   `class` `GFG{` `static` `final` `int` `N =  ``3``;`   `// Sorts a matrix in increasing order` `static` `int``[][] sortAllWay(``int` `arr[][])` `{` `  `  `    ``// Consider matrix elements (in row major` `    ``// order) and sort the sequence.` `    ``int` `[]ar = ``new` `int``[arr.length*arr.length];` `    ``int` `k = ``0``;` `    ``for``(``int` `i = ``0``; i < arr.length; i++) {` `        ``for``(``int` `j = ``0``; j < arr.length; j++) {` `            ``ar[k] = arr[i][j];` `            ``k++;` `        ``}` `    ``}` `    ``Arrays.sort(ar);` `    ``k = ``0``;` `    ``for``(``int` `i = ``0``; i < arr.length; i++) {` `        ``for``(``int` `j = ``0``; j < arr.length; j++) {` `            ``arr[i][j] = ar[k];` `            ``k++;` `        ``}` `    ``}` `    ``return` `arr;` `}`   `// Driver program` `public` `static` `void` `main(String[] args)` `{` `    ``int` `arr[][] = {{``1``, ``0``, ``3``},` `    ``{ ``2``, ``5``, ``6``},` `    ``{   ``9``, ``4``, ``8``}};` `    ``arr = sortAllWay(arr);`   `    ``// print resultant matrix` `    ``for` `(``int` `i = ``0``; i < N; i++)` `    ``{` `        ``for` `(``int` `j = ``0``; j < N; j++)` `            ``System.out.print(arr[i][j] + ``" "``);` `        ``System.out.println();` `    ``}` `}` `}`   `// This code is contributed by umadevi9616`

## Python3

 `# Python program to sort matrix in all-way` `N ``=` `3``;`   `# Sorts a matrix in increasing order` `def` `sortAllWay(arr):`   `    ``# Consider matrix elements (in row major` `    ``# order) and sort the sequence.` `    ``ar ``=` `[``0` `for` `i ``in` `range``(``len``(arr) ``*` `len``(arr))];` `    ``k ``=` `0``;` `    ``for` `i ``in` `range``(``len``(arr)):` `        ``for` `j ``in` `range``(``len``(arr)):` `            ``ar[k] ``=` `arr[i][j];` `            ``k ``+``=` `1``;` `    `  `    ``ar.sort();` `    ``k ``=` `0``;` `    ``for` `i ``in` `range``(``len``(arr)):` `        ``for` `j ``in` `range``(``len``(arr)):` `            ``arr[i][j] ``=` `ar[k];` `            ``k ``+``=` `1``;` `    `  `    ``return` `arr;`   `# Driver program` `if` `__name__ ``=``=` `'__main__'``:` `    ``arr ``=` `[[ ``1``, ``0``, ``3` `],[ ``2``, ``5``, ``6` `],[ ``9``, ``4``, ``8` `]] ;` `    ``arr ``=` `sortAllWay(arr);`   `    ``# print resultant matrix` `    ``for` `i ``in` `range``(N):` `        ``for` `j ``in` `range``(N):` `            ``print``(arr[i][j], end``=``" "``);` `        ``print``();` `    `  `# This code IS contributed by umadevi9616`

## C#

 `// C# program to sort matrix in all-way` `using` `System;`   `public` `class` `GFG {` `  ``static` `readonly` `int` `N = 3;`   `  ``// Sorts a matrix in increasing order` `  ``static` `int``[,] sortAllWay(``int` `[,]arr) {`   `    ``// Consider matrix elements (in row major` `    ``// order) and sort the sequence.` `    ``int``[] ar = ``new` `int``[arr.GetLength(0) * arr.GetLength(1)];` `    ``int` `k = 0;` `    ``for` `(``int` `i = 0; i < arr.GetLength(0); i++) {` `      ``for` `(``int` `j = 0; j < arr.GetLength(1); j++) {` `        ``ar[k] = arr[i,j];` `        ``k++;` `      ``}` `    ``}` `    ``Array.Sort(ar);` `    ``k = 0;` `    ``for` `(``int` `i = 0; i < arr.GetLength(0); i++) {` `      ``for` `(``int` `j = 0; j < arr.GetLength(1); j++) {` `        ``arr[i,j] = ar[k];` `        ``k++;` `      ``}` `    ``}` `    ``return` `arr;` `  ``}`   `  ``// Driver program` `  ``public` `static` `void` `Main(String[] args) {` `    ``int` `[,]arr = { { 1, 0, 3 }, { 2, 5, 6 }, { 9, 4, 8 } };` `    ``arr = sortAllWay(arr);`   `    ``// print resultant matrix` `    ``for` `(``int` `i = 0; i < N; i++) {` `      ``for` `(``int` `j = 0; j < N; j++)` `        ``Console.Write(arr[i,j] + ``" "``);` `      ``Console.WriteLine();` `    ``}` `  ``}` `}`   `// This code is contributed by umadevi9616 `

## Javascript

 ``

Output

```0 1 2
3 4 5
6 8 9 ```

Time Complexity : O(N*N log N)
Auxiliary Space : (N*N), since N*N extra space has been taken.