# Sort a Matrix in all way increasing order

• Difficulty Level : Basic
• Last Updated : 07 Jul, 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)