根据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) 排序算法。