Java 二维数组旋转

在计算机科学中,二维数组是一种常见的数据结构,它可以用来存储和组织数据。在某些情况下,我们可能需要对二维数组进行旋转操作,以便在不同的场景中使用。本文将介绍如何在Java中实现二维数组的旋转,并提供相应的代码示例。

什么是二维数组旋转

二维数组旋转通常指的是将一个二维数组的行和列进行交换,或者将整个数组旋转一定的角度。在Java中,我们可以使用多种方法来实现二维数组的旋转。

旋转二维数组的方法

  1. 转置:将二维数组的行和列进行交换。
  2. 顺时针旋转:将二维数组顺时针旋转90度。
  3. 逆时针旋转:将二维数组逆时针旋转90度。

代码示例

以下是使用Java实现二维数组旋转的代码示例。

转置二维数组

public static void transpose(int[][] matrix) {
    int n = matrix.length;
    int m = matrix[0].length;
    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < m; j++) {
            int temp = matrix[i][j];
            matrix[i][j] = matrix[j][i];
            matrix[j][i] = temp;
        }
    }
}

顺时针旋转二维数组

public static void rotateClockwise(int[][] matrix) {
    int n = matrix.length;
    int[][] rotated = new int[n][n];
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            rotated[j][n - 1 - i] = matrix[i][j];
        }
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            matrix[i][j] = rotated[i][j];
        }
    }
}

逆时针旋转二维数组

public static void rotateCounterClockwise(int[][] matrix) {
    int n = matrix.length;
    int[][] rotated = new int[n][n];
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            rotated[n - 1 - j][i] = matrix[i][j];
        }
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            matrix[i][j] = rotated[i][j];
        }
    }
}

流程图

以下是二维数组旋转的流程图。

flowchart TD
    A[开始] --> B[输入二维数组]
    B --> C{选择旋转方式}
    C --> D[转置]
    C --> E[顺时针旋转]
    C --> F[逆时针旋转]
    D --> G[交换行和列]
    E --> H[将数组顺时针旋转90度]
    F --> I[将数组逆时针旋转90度]
    G --> J[输出转置后的数组]
    H --> J
    I --> J
    J --> K[结束]

结论

通过本文的介绍和代码示例,我们可以看到在Java中实现二维数组旋转的方法。这些方法可以应用于不同的场景,如图像处理、数据可视化等。希望本文对您有所帮助。