📌  相关文章
📜  Java程序对矩阵按行和按列进行排序(1)

📅  最后修改于: 2023-12-03 15:02:06.029000             🧑  作者: Mango

Java程序对矩阵按行和按列进行排序

本文介绍如何使用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();
        }
    }

}

在这个类中,我们使用了两个方法sortByRowsortByColumn来分别对矩阵按行和按列进行排序。其中,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的矩阵,然后选择按列排序的方式,结果得到了排序后的矩阵结果。