📌  相关文章
📜  根据Java中任何给定列中的值对二维数组进行排序

📅  最后修改于: 2022-05-13 01:54:50.490000             🧑  作者: Mango

根据Java中任何给定列中的值对二维数组进行排序

我们得到一个 NXM 阶的二维数组和一个列号 K ( 1<=K<=m)。我们的任务是根据 K 列中的值对二维数组进行排序。

例子:

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 中使用Java

// Java Code to sort 2D Matrix
// according to any Column
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() {
            
          @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().
    }
      
    // Driver Code
    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();
        }
    }
}

输出:

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

时间复杂度: O(n Log n) 其中 n 是行数。这里假设 sort()函数使用 O(n Log n) 排序算法。