打印螺旋矩阵java的算法详细说明
时间: 2023-11-18 16:57:07 浏览: 94
螺旋矩阵是指一个矩阵从外向内顺时针方向依次填入整数,直到矩阵中心位置。下面是一种Java语言实现的螺旋矩阵打印算法:
```java
public static void spiralPrint(int[][] matrix) {
int rows = matrix.length;
int cols = matrix[0].length;
int startRow = 0, startCol = 0;
int endRow = rows - 1, endCol = cols - 1;
while (startRow <= endRow && startCol <= endCol) {
// 打印当前圈的上边
for (int i = startCol; i <= endCol; i++) {
System.out.print(matrix[startRow][i] + " ");
}
// 打印当前圈的右边(除上边之外)
for (int i = startRow + 1; i <= endRow; i++) {
System.out.print(matrix[i][endCol] + " ");
}
// 打印当前圈的下边(除上边和右边之外)
if (startRow != endRow) {
for (int i = endCol - 1; i >= startCol; i--) {
System.out.print(matrix[endRow][i] + " ");
}
}
// 打印当前圈的左边(除上边、右边和下边之外)
if (startCol != endCol) {
for (int i = endRow - 1; i > startRow; i--) {
System.out.print(matrix[i][startCol] + " ");
}
}
// 缩小圈的范围
startRow++;
endRow--;
startCol++;
endCol--;
}
}
```
该算法的时间复杂度为O(mn),其中m和n分别为矩阵的行数和列数。
阅读全文