Open In App
Related Articles

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

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Report issue
Report

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


                    

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

The idea is to use Arrays.sort in Java

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 

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



Last Updated : 15 May, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads