📅  最后修改于: 2023-12-03 15:02:06.029000             🧑  作者: Mango
本文介绍如何使用Java编写一个程序来对矩阵进行按行和按列排序的操作。
首先,我们需要定义一个MatrixSort
类,用于对矩阵进行排序操作。
public class MatrixSort {
private int[][] matrix; // 存储矩阵的二维数组
public MatrixSort(int[][] matrix) {
this.matrix = matrix;
}
/**
* 按行排序
*/
public void sortByRow() {
for (int r = 0; r < matrix.length; r++) {
Arrays.sort(matrix[r]);
}
}
/**
* 按列排序
*/
public void sortByColumn() {
for (int c = 0; c < matrix[0].length; c++) {
int[] column = new int[matrix.length];
for (int r = 0; r < matrix.length; r++) {
column[r] = matrix[r][c];
}
Arrays.sort(column);
for (int r = 0; r < matrix.length; r++) {
matrix[r][c] = column[r];
}
}
}
/**
* 获取排序后的矩阵
*/
public int[][] getSortedMatrix() {
return matrix;
}
/**
* 打印矩阵
*/
public void printMatrix() {
for (int r = 0; r < matrix.length; r++) {
for (int c = 0; c < matrix[0].length; c++) {
System.out.print(matrix[r][c] + " ");
}
System.out.println();
}
}
}
在这个类中,我们使用了两个方法sortByRow
和sortByColumn
来分别对矩阵按行和按列进行排序。其中,Arrays.sort
方法可以对数组进行排序操作。
在sortByColumn
方法中,我们首先通过循环获取矩阵中的每一列,并将其存储在一个临时数组中。然后对临时数组进行排序操作,并将结果赋值回原数组对应列。
接下来,我们使用一个Main
类来演示如何使用MatrixSort
类对矩阵进行排序。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 输入矩阵
System.out.println("请输入矩阵的行数和列数:");
int rows = scanner.nextInt();
int cols = scanner.nextInt();
int[][] matrix = new int[rows][cols];
System.out.println("请输入矩阵元素:");
for (int r = 0; r < rows; r++) {
for (int c = 0; c < cols; c++) {
matrix[r][c] = scanner.nextInt();
}
}
// 对矩阵进行排序
System.out.println("请选择按行排序还是按列排序(1为按行,2为按列):");
int choice = scanner.nextInt();
MatrixSort matrixSort = new MatrixSort(matrix);
switch (choice) {
case 1:
matrixSort.sortByRow();
break;
case 2:
matrixSort.sortByColumn();
break;
default:
System.out.println("无效选择!");
return;
}
// 输出排序后的矩阵
System.out.println("排序后的矩阵:");
matrixSort.printMatrix();
}
}
在Main
类中,我们首先通过Scanner
类获取用户输入的矩阵元素和排序方式。然后创建一个MatrixSort
对象,并根据用户选择调用不同的排序方法。最后输出排序后的矩阵结果。
下面是一个演示效果,我们以一个3*3的矩阵为例演示。
请输入矩阵的行数和列数:
3 3
请输入矩阵元素:
3 5 1
6 8 2
7 4 9
请选择按行排序还是按列排序(1为按行,2为按列):
2
排序后的矩阵:
1 5 3
2 8 6
4 7 9
在这个例子中,我们首先输入了一个3*3的矩阵,然后选择按列排序的方式,结果得到了排序后的矩阵结果。