返回

矩阵的螺旋打印

闲谈

在计算机科学中,矩阵的螺旋打印 是指将一个二维矩阵中的元素按照从外向里以顺时针的顺序依次打印出来。这是一种常见的编程问题,经常被用来测试程序员的基本编程能力和对二维数组的理解程度。

算法实现

1. 确定边界

首先,我们需要确定矩阵的边界,即矩阵的第一行、最后一列、最后一行和第一列。

2. 循环打印

然后,我们可以按照如下步骤循环打印矩阵的元素:

  1. 从矩阵的第一行开始,从左到右打印元素。
  2. 到达矩阵的最后一列后,从上到下打印元素。
  3. 到达矩阵的最后一行后,从右到左打印元素。
  4. 到达矩阵的第一列后,从下到上打印元素。

3. 更新边界

每完成一轮打印,我们需要更新矩阵的边界,以便继续下一轮打印。

代码实现

def spiral_print(matrix):
    """
    打印一个矩阵的螺旋顺序。

    参数:
        matrix: 输入的矩阵。

    返回:
        无。
    """
    if not matrix:
        return

    # 初始化边界
    top, bottom, left, right = 0, len(matrix) - 1, 0, len(matrix[0]) - 1

    # 循环打印
    while top <= bottom and left <= right:
        # 从左到右打印第一行
        for i in range(left, right + 1):
            print(matrix[top][i], end=" ")

        # 从上到下打印最后一列
        for i in range(top + 1, bottom):
            print(matrix[i][right], end=" ")

        # 从右到左打印最后一行
        if top < bottom:
            for i in range(right, left - 1, -1):
                print(matrix[bottom][i], end=" ")

        # 从下到上打印第一列
        if left < right:
            for i in range(bottom - 1, top, -1):
                print(matrix[i][left], end=" ")

        # 更新边界
        top += 1
        bottom -= 1
        left += 1
        right -= 1


# 测试代码
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
spiral_print(matrix)

输出结果:

1 2 3 6 9 8 7 4 5