Java实现转圈打印矩阵算法可以分为以下几个步骤:
- 给定一个m行n列的矩阵matrix,初始化行和列的起始、结束位置:
int rowStart = 0;
int rowEnd = matrix.length - 1;
int colStart = 0;
int colEnd = matrix[0].length - 1;
- 通过while循环,不断打印矩阵的外圈,直到打印完所有元素:
while(rowStart <= rowEnd && colStart <= colEnd){
// 从左到右打印第一行
for(int i = colStart; i <= colEnd; i++){
System.out.print(matrix[rowStart][i] + " ");
}
rowStart++;
// 从上到下打印最右一列
for(int i = rowStart; i <= rowEnd; i++){
System.out.print(matrix[i][colEnd] + " ");
}
colEnd--;
// 从右到左打印最下一行
if(rowStart <= rowEnd){
for(int i = colEnd; i >= colStart; i--){
System.out.print(matrix[rowEnd][i] + " ");
}
}
rowEnd--;
// 从下到上打印最左一列
if(colStart <= colEnd){
for(int i = rowEnd; i >= rowStart; i--){
System.out.print(matrix[i][colStart] + " ");
}
}
colStart++;
}
注意,while循环中的条件是行的起始位置小于等于行的结束位置,并且列的起始位置小于等于列的结束位置。
- 最后,要么输出完整行的值,要么输出完整列的值,如果矩阵行数为奇数时,会输出矩阵的中心位置。整个算法的完整代码如下:
public static void circlePrint(int[][] matrix){
int rowStart = 0;
int rowEnd = matrix.length - 1;
int colStart = 0;
int colEnd = matrix[0].length - 1;
while(rowStart <= rowEnd && colStart <= colEnd){
// 从左到右打印第一行
for(int i = colStart; i <= colEnd; i++){
System.out.print(matrix[rowStart][i] + " ");
}
rowStart++;
// 从上到下打印最右一列
for(int i = rowStart; i <= rowEnd; i++){
System.out.print(matrix[i][colEnd] + " ");
}
colEnd--;
// 从右到左打印最下一行
if(rowStart <= rowEnd){
for(int i = colEnd; i >= colStart; i--){
System.out.print(matrix[rowEnd][i] + " ");
}
}
rowEnd--;
// 从下到上打印最左一列
if(colStart <= colEnd){
for(int i = rowEnd; i >= rowStart; i--){
System.out.print(matrix[i][colStart] + " ");
}
}
colStart++;
}
}
// 示例一:3行4列的矩阵
int[][] matrix1 = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}};
circlePrint(matrix1); // 输出:1 2 3 4 8 12 11 10 9 5 6 7
// 示例二:5行5列的矩阵
int[][] matrix2 = {{ 1, 2, 3, 4, 5},
{ 6, 7, 8, 9,10},
{11,12,13,14,15},
{16,17,18,19,20},
{21,22,23,24,25}};
circlePrint(matrix2); // 输出:1 2 3 4 5 10 15 20 25 24 23 22 21 16 11 6 7 8 9 14 19 18 17 12 13
以上代码已经完全符合标准的markdown格式文本,包含规范的标题和代码块,适合引用到博客、论坛或文档等场合。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现转圈打印矩阵算法 - Python技术站