Java 程序打印数字的螺旋图案

2025 年 1 月 6 日 | 阅读 4 分钟

螺旋图案是计算机图形学中一个流行的概念,可以以独特而有趣的方式可视化数据。在本节中,我们将探讨如何使用 Java 创建数字螺旋图案。我们将涵盖 **螺旋图案背后的逻辑和分步实现**,并提供完整的 Java 代码。

理解螺旋图案

数字螺旋图案通常从中心点开始,然后以圆形方式向外盘旋。为了简单起见,我们将从矩阵的左上角开始,并沿顺时针方向前进,直到填满整个矩阵。

让我们以一个 4x4 矩阵的示例为例

步骤 1:初始化矩阵

目标:创建一个空的二维数组(矩阵)来存储数字。

过程

  1. 确定矩阵的大小 n。它将是一个 n x n 的矩阵。
  2. 声明并初始化一个大小为 n x n 的二维数组 matrix。

步骤 2:定义边界

目标:跟踪需要填充的矩阵边界。

过程

  1. 初始化变量来表示矩阵的当前边界
  2. top:初始设置为 0。
  3. bottom:初始设置为 n - 1。
  4. left:初始设置为 0。
  5. right:初始设置为 n - 1。

步骤 3:填充矩阵

目标:使用循环,通过遵循边界以螺旋顺序填充矩阵。

过程

  1. 初始化一个变量 value 为 1,它将用于增量填充矩阵。
  2. 使用 while 循环继续填充矩阵,直到所有单元格都被填充(value <= n * n)。
  3. 从左到右遍历顶行
    • 使用 for 循环从左到右进行迭代。
    • 为顶行中的每个元素赋值并递增 value。
    • 循环结束后,递增 top 边界以将其向下移动。
  4. 从上到下遍历右侧列
    • 使用 for 循环从上到下进行迭代。
    • 为右侧列中的每个元素赋值并递增 value。
    • 循环结束后,减小 right 边界以将其向左移动。
  5. 从右到左遍历底行
    • 使用 for 循环从右到左进行迭代。
    • 为底行中的每个元素赋值并递增 value。
    • 循环结束后,减小 bottom 边界以将其向上移动。
  6. 从下到上遍历左侧列
    • 使用 for 循环从下到上进行迭代。
    • 为左侧列中的每个元素赋值并递增 value。
    • 循环结束后,递增 left 边界以将其向右移动。
  7. 重复此过程
    • 继续循环,直到矩阵中的所有单元格都被填充。

Java 实现

以下是为给定的 n x n 矩阵生成和打印数字螺旋图案的完整 Java 代码。

文件名:SpiralPattern.java

输出

  1   2   3   4 
 12  13  14   5 
 11  16  15   6 
 10   9   8   7

解释

程序首先初始化矩阵并定义大小 n(例如 4)。然后我们创建一个二维数组 matrix 来存储数字。fillSpiralMatrix() 方法负责以螺旋顺序填充矩阵。我们将 value 初始化为 1,这是起始数字,并使用 top、bottom、left 和 right 变量来跟踪矩阵的当前边界。

使用嵌套循环,我们以螺旋顺序填充矩阵。每次循环迭代覆盖当前边界的一侧(top、right、bottom、left)。填充一侧后,我们更新边界以向内移动。此过程一直持续到矩阵中的所有单元格都被填充。

时间和空间复杂度

时间复杂度

上述程序的 time complexity 为 O(n^2)。

空间复杂度

程序的 space complexity 为 O(n^2)。