Print two-dimensional array in spiral order
Data Structures & Algorithms practice on Codemia
Step through 300 algorithm problems with animated visualisers that show the data structure changing as the code runs.
Introduction
Printing a two-dimensional array in spiral order is a classic problem in computer science and coding interviews. The spiral order refers to traversing the matrix in a manner that starts at the top left corner and proceeds in a clockwise spiral, covering all the elements of the matrix. This problem is a good exercise in understanding array indexing, conditional loops, and boundary management.
Conceptual Explanation
To print a two-dimensional array in spiral order, you need to systematically move right, down, left, and up, adjusting the boundaries each time you complete a direction to prevent revisiting elements. This traversal continues until all elements are printed.
Steps for Spiral Order Traversal
- Initialize four boundaries:
- `top`: Starting row index (initially 0).
- `bottom`: Ending row index (initially number of rows - 1).
- `left`: Starting column index (initially 0).
- `right`: Ending column index (initially number of columns - 1).
- Traverse in steps:
- Move Right: Traverse from `left` to `right` along the `top` row, then increment `top`.
- Move Down: Traverse from `top` to `bottom` along the `right` column, then decrement `right`.
- Move Left: Traverse from `right` to `left` along the `bottom` row, then decrement `bottom`.
- Move Up: Traverse from `bottom` to `top` along the `left` column, then increment `left`.
- Loop through the steps until the boundaries overlap, i.e., when `top > bottom` or `left > right`.
Technical Implementation
Here is a Python implementation of printing a two-dimensional array in spiral order:
1 2 3 4 5 6 7 8 9
1 2 3 6 9 8 7 4 5
- Image Processing: Navigating pixels in a clockwise spiral can be useful in various image processing techniques.
- Data Visualization: Creating circular graphs and layouts often require understanding of spiral traversal.
- Robotics: Programming robots to navigate space in a systematic manner can use spiral motion.
- Counterclockwise Spiral: The traversal can be modified to start moving left and alternate upward, right, and downward.
- Spiral from Center: Instead of starting from the top-left corner, you can start from the center and spiral outward.
- Handling edge cases where the matrix is empty.
- Properly managing the boundaries to avoid overstepping the matrix bounds.
- Adapting the technique for non-rectangular matrices.
Related reading
- Printing all possible subsets of a list
- Printing all possible words from a 2D array of characters
- Printing BFS Binary Tree in Level Order with Specific Formatting
- Priority Queue in swift
- printing all contents of array in C
- Printing HashMap In Java
- Probability and Neural Networks
- Probabilty based on quicksort partition

DSA Fundamentals
Master algorithmic patterns and data structures through hands-on LeetCode-style problems - from arrays and hashing to dynamic programming and advanced graphs.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
Data Structures & Algorithms practice on Codemia
Step through 300 algorithm problems with animated visualisers that show the data structure changing as the code runs.