Java Program to print a given matrix in spiral form
Hello Friends, In this tutorial, we will look at how to print a given matrix in spiral form using Java program, a matrix of size m * n is taken (m is the number of rows and n is the number of columns).
Print the given matrix in spiral form in Java
Let’s look at the following example:
Matrix M =
1 → 2 → 3
. ↓
4 → 5 6
↑ ↓
7 ← 8 ← 9
Spiral Order of this matrix M is 1 2 3 6 9 8 7 4 5 that is shown using arrows.
In the above matrix number of rows are 3 so m=3, similarly n=3 as the number of columns is 3. So, The total number of elements that have to be printed would be equal to m*n. We maintain four variable as first_row, last_row, first_column and last_column, in each iteration we move from first_column to last_column(left to right) in first_row then first_row+1 to last_row(top to bottom) in last_column then last_col-1 to first_col (right to left) in last_row and finally last_row-1 to first_row+1 (bottom to top) in first_column. After each iteration, we update first_row and first_column by incrementing 1 and last_row and last_column by decrementing 1.
Please look at the attached spiral.java for implementation:
import java.util.*; import java.io.*; public class spiral { public static void main(String[] args) { int [][]a = {{1,2,3},{4,5,6},{7,8,9}}; // 1 2 3 // 4 5 6 // 7 8 9 int m = 3; // number of rows int n = 3; // number of columns int first_row=0; int last_row=m-1; int first_column=0; int last_column=n-1; for(int i=0;i<m;i++) { for(int j=0;j<n;j++) { System.out.print(a[i][j]+"\t"); } System.out.println(); } System.out.println("The Output of the given matrix in spiral order: "); int count=0; while((first_row<=last_row) && (first_column<=last_column)) { for(int i=first_column;i<=last_column;i++) { if(count<m*n) { count++; System.out.print(a[first_row][i]+" "); } } for(int i=first_row+1;i<=last_row;i++) { if(count<m*n) { count++; System.out.print(a[i][last_column]+" "); } } for(int i=last_column-1;i>=first_column;i--) { if(count<m*n) { count++; System.out.print(a[last_row][i]+" "); } } for(int i=last_row-1;i>first_row;i--) { if(count<m*n) { count++; System.out.print(a[i][first_column]+" "); } } first_row++; first_column++; last_row--; last_column--; } } }
After Compiling it using javac spiral.java and then executing it using java spiral we get our output as:
1 2 3 4 5 6 7 8 9 The output of the given matrix in spiral order: 1 2 3 6 9 8 7 4 5
Leave a Reply