Print Elements in Sorted Order using Row-Column Wise Sorted Matrix in Java
Elements in Sorted Order using row-column wise sorted matrix in Java
Here, in this page we will discuss the program to print elements in sorted order using row-column wise sorted matrix in Java programming language. We are given with a matrix in which each row and column are sorted in non-decreasing manner.
Method 1 :
- Let’s say the number of rows be n and number of columns be m.
- Now, create an array of size (n*m).
- Insert all the elements of the matrix in the declared array.
- Using Arrays.sort() function sort the entire array.
- Print the array.
Time and Space Complexity :
- Time-Complexity : O(n*m*log(n*m))
- Space-Complexity : O(n*m)
Method 1 : Code in Java
Run
import java.util.Arrays;
class Main{
public static void main(String args[])
{
int mat[][] = {{10, 20, 30, 40},
{15, 25, 35, 45},
{27, 29, 37, 48},
{32, 33, 39, 50}};
int n=4, m=4;
int[] arr = new int[n*m];
int x=0;
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
arr[x++]=mat[i][j];
}
}
int size = n*m;
Arrays.sort(arr);
for(int i=0; i<size; i++)
System.out.print(arr[i] + " ");
}
}
Output :
10 15 20 25 27 29 30 32 33 35 37 39 40 45 48 50
Method 2:
We can use Young Tableau to solve the given problem. The idea is to consider given 2D array as Young Tableau and call extract minimum O(N).
Method 2 : Code in Java
Run
class Main
{
static final int INF = Integer.MAX_VALUE;
static final int N = 4;
static void youngify(int mat[][], int i, int j)
{
int downVal = (i + 1 < N) ?
mat[i + 1][j] : INF;
int rightVal = (j + 1 < N) ?
mat[i][j + 1] : INF;
if (downVal == INF && rightVal == INF)
{
return;
}
if (downVal < rightVal)
{
mat[i][j] = downVal;
mat[i + 1][j] = INF;
youngify(mat, i + 1, j);
}
else
{
mat[i][j] = rightVal;
mat[i][j + 1] = INF;
youngify(mat, i, j + 1);
}
}
static int extractMin(int mat[][])
{
int ret = mat[0][0];
mat[0][0] = INF;
youngify(mat, 0, 0);
return ret;
}
static void printSorted(int mat[][])
{
for (int i = 0; i < N * N; i++)
{
System.out.print(extractMin(mat) + " ");
}
}
public static void main(String args[])
{
int mat[][] = {{10, 20, 30, 40},
{15, 25, 35, 45},
{27, 29, 37, 48},
{32, 33, 39, 50}};
printSorted(mat);
}
}
Output :
10 15 20 25 27 29 30 32 33 35 37 39 40 45 48 50

Login/Signup to comment