# Sorting a 2D Array according to values in any given column in Java

Last Updated : 21 Mar, 2024

We are given a 2D array of order N X M and a column number K ( 1<=K<=m). Our task is to sort the 2D array according to values in Column K.

Examples:

Input: If our 2D array is given as (Order 4X4)
39 27 11 42
10 93 91 90
54 78 56 89
24 64 20 65

Sorting it by values in column 3

Output:

39 27 11 42
24 64 20 65
54 78 56 89
10 93 91 90

### Java Program to Sort a 2D Array according to values in any given Column

Java ```// Java Program to Sorting a 2D Array according to values // in any given column import java.io.*; import java.util.*; // Class class GFG { // Method to sort by column public static void sortbyColumn(int arr[][], int col) { // Using built-in sort function Arrays.sort with lambda expressions Arrays.sort(arr, (a, b) -> Integer.compare(a[col],b[col])); // increasing order } public static void main(String args[]) { int matrix[][] = { { 39, 27, 11, 42 }, { 10, 93, 91, 90 }, { 54, 78, 56, 89 }, { 24, 64, 20, 65 } }; // Sort this matrix by 3rd Column int col = 3; sortbyColumn(matrix, col - 1); // Display the sorted Matrix for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[i].length; j++) System.out.print(matrix[i][j] + " "); System.out.println(); } } } ```

Output
```39 27 11 42
24 64 20 65
54 78 56 89
10 93 91 90

```

## Java Program to sort 2D Matrix according to any Column

The idea is to use Arrays.sort in Java.

Syntax:

`Arrays.sort(arr, (a,b)->a[0]-b[0]);`
Java ```// Java Code to sort 2D Matrix // according to any Column // Importing required classes import java.util.*; class sort2DMatrixbycolumn { // Function to sort by column public static void sortbyColumn(int arr[][], int col) { // Using built-in sort function Arrays.sort Arrays.sort(arr, new Comparator<int[]>() { @Override // Compare values according to columns public int compare(final int[] entry1, final int[] entry2) { // To sort in descending order revert // the '>' Operator if (entry1[col] > entry2[col]) return 1; else return -1; } }); // End of function call sort(). } // Main driver method public static void main(String args[]) { int matrix[][] = { { 39, 27, 11, 42 }, { 10, 93, 91, 90 }, { 54, 78, 56, 89 }, { 24, 64, 20, 65 } }; // Sorting the matrix by 3rd Column int col = 3; sortbyColumn(matrix, col - 1); // Printing the sorted matrix for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[i].length; j++) System.out.print(matrix[i][j] + " "); System.out.println(); } } } ```

Output
```39 27 11 42
24 64 20 65
54 78 56 89
10 93 91 90

```

#### Explanation of the above Program:

• If element at 0 index of array a is greater than element at 0 index of array b, their difference will be positive. This means array a is kept after array b.
• If element at 0 index of array a is smaller than element at 0 index of array b, their difference will be negative. This means array b is kept after array a.
• If both the elements are equal, then their difference will be 0. This means that they will be equally placed.
• On the basis of these values, the entire array is sorted.

Time complexity: O(n log n) where n is the number of rows.

Previous
Next