Share on Google+Share on Google+

Java: Spiral Traverse

Advertisement
This section explain the logic of spiral traverse of n*m matrix in java.

Java: Spiral Traverse

This section explain the logic of spiral traverse of n*m matrix in java.

Spiral Traverse : Spiral Traverse means move in clock wise direction around a rectangular shape and finally print the middle one element.

It is a logical concept we are explaining it by example -

Example :

class SpiralTraverse {
	static int r = 4;
	static int c = 6;

	public static void main(String[] args) {
		int[][] a = { { 1, 2, 3, 4, 5, 6 }, { 7, 8, 9, 10, 11, 12 },
				{ 13, 14, 15, 16, 17, 18 }, { 19, 20, 21, 22, 23, 24 },

		};

		spiralPrint(r, c, a);
	}

	static void spiralPrint(int rIndex, int cIndex, int[][] a) {
		int i, k = 0, l = 0;
		rIndex--;
		cIndex--;
		/*
		 * k - starting row index rIndex - ending row index l - starting column index
		 * cIndex - ending column index i - iterator
		 */

		while (k <= rIndex && l <= cIndex) {
			/* Print the first row from the remaining rows */
			for (i = l; i <= cIndex; i++) {
				System.out.print(a[k][i] + " ");
			}
			k++;

			/* Print the last column from the remaining columns */
			for (i = k; i <= rIndex; i++) {
				System.out.print(a[i][cIndex] + " ");
			}
			cIndex--;

			/* Print the last row from the remaining rows */
			if (k <= rIndex) {

				for (i = cIndex; i >= l; i--) {
					System.out.print(a[rIndex][i] + " ");
				}
				rIndex--;
			}

			/* Print the first column from the remaining columns */
			if (l <= cIndex) {
				for (i = rIndex; i >= k; i--) {
					System.out.print(a[i][l] + " ");
				}
				l++;
			}
		}

	}
}

Description : In this example we are printing element of 4*6 matrix in spiral traversing. To traverse the each element put condition
while (k <= rIndex && l <= cIndex) .
Now we traverse first row of matrix and then the last column and then last row and then the first column and repeat the same till the while condition fails.

Output :

1 2 3 4 5 6 12 18 24 23 22 21 20 19 13 7 8 9 10 11 17 16 15 14 

Advertisements

Posted on: November 23, 2012 If you enjoyed this post then why not add us on Google+? Add us to your Circles

Share this Tutorial Follow us on Twitter, or add us on Facebook or Google Plus to keep you updated with the recent trends of Java and other open source platforms.