java实现转圈打印矩阵算法

Java实现转圈打印矩阵算法可以分为以下几个步骤:

  1. 给定一个m行n列的矩阵matrix,初始化行和列的起始、结束位置:
int rowStart = 0;
int rowEnd = matrix.length - 1;
int colStart = 0;
int colEnd = matrix[0].length - 1;
  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循环中的条件是行的起始位置小于等于行的结束位置,并且列的起始位置小于等于列的结束位置。

  1. 最后,要么输出完整行的值,要么输出完整列的值,如果矩阵行数为奇数时,会输出矩阵的中心位置。整个算法的完整代码如下:
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技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • javascript forEach函数实现代码

    JavaScript中的forEach()函数,是一种迭代数组中每个元素的方式,是一种可以使代码更清爽、高效的编程技巧。下面是详细讲解Javascript forEach函数实现代码的完整攻略,包含了基本语法、示例说明以及实际应用场景。 基本语法 forEach()函数是JavaScript中的一个方法,用于迭代一个数组,遍历每个元素并且对其执行一个指定的操…

    Java 2023年6月15日
    00
  • JavaScript实现留言板添加删除留言

    下面是“JavaScript实现留言板添加删除留言”的完整攻略: 1. 创建HTML页面结构 首先创建一个HTML文件,结构如下: <!DOCTYPE html> <html> <head> <title>留言板</title> </head> <body> <h1&g…

    Java 2023年6月15日
    00
  • 两种用空格分隔的java字符串的方式

    确实,Java中有两种使用空格分隔字符串的方法: 使用split方法: split方法允许您将字符串分裂成子字符串数组,方法如下: String[] strArray = "Hello World".split(" "); 这将创建一个字符串数组,其中包含两个元素: “Hello” 和 “World”。您可以使用for…

    Java 2023年5月27日
    00
  • java字符转码的三种方法总结及实例

    它们是: Java字符转码的三种方法总结及实例 在Java编程中,处理字符编码转换是常见的任务。不正确或不一致的字符编码转换可能导致各种问题,例如乱码、字符截断或不完整等等。因此,我们必须正确、准确地处理字符编码转换。本文将介绍3种常用的Java字符转码方法,并提供相关示例以方便理解和实践。 1. 使用Java内置的Charset类 该方法主要利用了Java…

    Java 2023年5月20日
    00
  • Springboot启动不检查JPA的数据源配置方式

    启动时不检查数据源配置可以使用Springboot的一些特定属性来实现。在Springboot中,这些属性主要定义在application.properties(或者application.yml)文件中。为了实现启动时不检查数据源配置,需要在这些文件中添加以下内容: spring.datasource.continue-on-error=true spri…

    Java 2023年5月20日
    00
  • 深入解析Java中的JDBC事务

    深入解析Java中的JDBC事务 什么是JDBC事务 JDBC事务是指,在Java程序中通过JDBC访问数据库时,由一组操作组成的逻辑单元。这些操作被当做一个整体,要么全部执行成功,要么全部回滚(撤销)。JDBC事务是为了保证操作的原子性、一致性、隔离性和持久性而存在的。 原子性 JDBC事务的原子性指,一个事务中所有的SQL语句要么全部执行成功,要么全部失…

    Java 2023年5月20日
    00
  • Java实现生产者消费者问题与读者写者问题详解

    Java实现生产者消费者问题与读者写者问题是多线程编程中的经典问题,本文将从理论基础、问题场景以及代码实现三方面来详细讲解解决这两个问题的完整攻略。 理论基础 在介绍具体问题场景之前,首先需要了解几个概念: 生产者:向缓冲区中存入数据的线程。 消费者:从缓冲区中取出数据的线程。 缓冲区:存放生产者生产的数据,并提供给消费者消费。 临界区:多个线程共同访问的区…

    Java 2023年5月19日
    00
  • Spring AOP日志框架实现过程图解

    下面是关于“Spring AOP日志框架实现过程图解”的完整攻略,包含两个示例说明。 Spring AOP日志框架实现过程图解 Spring AOP(Aspect Oriented Programming)是一种面向切面编程的技术,它可以在不修改原有代码情况下,对系统进行横向切割,实现诸如权限管理、数据校验、操作日志等功能。本文将介绍如何使用Spring A…

    Java 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部