Open In App
Related Articles

Print a given matrix in zigzag form

Improve Article
Improve
Save Article
Save
Like Article
Like

Given a 2D array, print it in zigzag form. Examples : 

Input : 
        1    2   3   4   5
        6    7   8   9   10
        11   12  13  14  15
        16  17  18  19   20
Output :
1 2 3 4 5 10 9 8 7 6 11 12 13 14 15 20 19 18 17 16 


Input :
        10    24   32   
        50    6    17   
        99    10   11  
         
Output :
10 24 32 17 6 50 99 10 11

zigzag 

CPP




// C++ program to print
// matrix in zig-zag form
#include <iostream>
using namespace std;
const int MAX = 100;
   
    // Method to print matrix in zig-zag form
    void printZigZag(int row, int col, int a[][MAX])
    {
        int evenRow = 0; //starts from the first row
        int oddRow = 1; //starts from the next row
   
        while (evenRow<row)
        {
            for (int i=0;i<col;i++)
            {
                // evenRow will be printed
                        // in the same direction
                cout<<a[evenRow][i] << " ";
            }
               
            // Skipping next row so as
                // to get the next evenRow
            evenRow = evenRow + 2;
               
            if(oddRow < row)
            {
                for (int i=col-1; i>=0; i--)
                {
                // oddRow will be printed in
                    // the opposite direction
                cout<<a[oddRow][i] << " ";
                }
            }
           
            // Skipping next row so as
                // to get the next oddRow
            oddRow = oddRow + 2;
        }
    }
   
// Driver function
int main() {
   
    int r = 3, c = 5;
      int mat[][MAX] = { {1, 2, 3, 4, 5},
                         {6, 7, 8, 9, 10},
                         {11, 12, 13, 14, 15}};
   
        printZigZag(r , c , mat);
      return 0;
}

Java




// Java program to print matrix in zig-zag form
public class GFG
{
    // Method to print matrix in zig-zag form
    static void printZigZag(int row, int col, int a[][])
    {
        int evenRow = 0; // starts from the first row
        int oddRow = 1; // starts from the next row
   
        while (evenRow < row)
        {
            for (int i = 0; i < col; i++)
            {
                // evenRow will be printed in the same direction
                System.out.print(a[evenRow][i] + " ");
            }
               
            // Skipping next row so as to get the next evenRow
            evenRow = evenRow + 2;
               
            if(oddRow < row)
            {
            for (int i = col - 1; i >= 0; i--)
            {
                // oddRow will be printed in the opposite direction
                System.out.print(a[oddRow][i] + " ");
            }
            }
           
            // Skipping next row so as to get the next oddRow
            oddRow = oddRow + 2;
        }
    }
   
    public static void main(String[] args)
    {
   
        int r = 3, c = 5;
   
        int mat[][] = { {1, 2, 3, 4, 5},
                         {6, 7, 8, 9, 10},
                         {11, 12, 13, 14, 15}};
   
        printZigZag(r , c , mat);
    }
}

Python3




# Python 3 program to print
# matrix in zig-zag form
   
# Method to print matrix
# in zig-zag form
def printZigZag(row, col, a):
    evenRow = 0 # starts from the first row
    oddRow = 1 # starts from the next row
   
    while evenRow < row:
        for i in range(col):
               
            # evenRow will be printed
            # in the same direction
            print(str(a[evenRow][i] ),
                           end = " ")
                              
        # Skipping next row so as
        # to get the next evenRow
        evenRow = evenRow + 2
               
        if oddRow < row:
            for i in range(col - 1, -1, -1):
                   
                # oddRow will be printed in
                # the opposite direction
                print(str(a[oddRow][i]),
                             end = " ")
                   
        # Skipping next row so as
        # to get the next oddRow
        oddRow = oddRow + 2
   
# Driver Code
r = 3
c = 5
   
mat = [[1, 2, 3, 4, 5],
       [6, 7, 8, 9, 10],
       [11, 12, 13, 14, 15]];
   
printZigZag(r , c , mat)
   
# This code is contributed
# by ChitraNayal

C#




// C# program to print matrix in zig-zag form
using System;
   
public class GFG {
       
    // Method to print matrix in zig-zag form
    static void printZigZag(int row, int col, int[, ] a)
    {
           
        // starts from the first row
        int evenRow = 0;
           
        // starts from the next row
        int oddRow = 1;
   
        while (evenRow < row) {
            for (int i = 0; i < col; i++) {
                   
                // evenRow will be printed in
                // the same direction
                Console.Write(a[evenRow, i] + " ");
            }
   
            // Skipping next row so as to get the
            // next evenRow
            evenRow = evenRow + 2;
   
            if(oddRow < row)
            {
                for (int i = col - 1; i >= 0; i--)
                {
                   
                    // oddRow will be printed in the
                    // opposite direction
                    Console.Write(a[oddRow, i] + " ");
                }
            }
   
            // Skipping next row so as to get
            // the next oddRow
            oddRow = oddRow + 2;
        }
    }
   
    public static void Main()
    {
   
        int r = 3, c = 5;
           
        int[, ] mat = { { 1, 2, 3, 4, 5 },
                        { 6, 7, 8, 9, 10 },
                        { 11, 12, 13, 14, 15 }
                      };
   
        printZigZag(r, c, mat);
    }
}
   
// This code is contributed by vt_m.

PHP




<?php
// PHP program to print
// matrix in zig-zag form
   
// Method to print matrix
// in zig-zag form
function printZigZag($row, $col, $a)
    {
        //starts from the first row
        $evenRow = 0;
           
        //starts from the next row
        $oddRow = 1;
   
        while ($evenRow < $row)
        {
            for ( $i = 0; $i < $col; $i++)
            {
                // evenRow will be printed
                // in the same direction
                echo $a[$evenRow][$i], " ";
            }
               
            // Skipping next row so as
            // to get the next evenRow
            $evenRow = $evenRow + 2;
               
            if($oddRow < $row)
            {
                for ($i = $col - 1; $i >= 0; $i--)
                {
                // oddRow will be printed in
                // the opposite direction
                echo $a[$oddRow][$i], " ";
                }
            }
           
            // Skipping next row so as
            // to get the next oddRow
            $oddRow = $oddRow + 2;
        }
    }
   
// Driver Code
$r = 3; $c = 5;
$mat = array(array(1, 2, 3, 4, 5),
             array(6, 7, 8, 9, 10),
             array(11, 12, 13, 14, 15));
   
printZigZag($r , $c , $mat);
       
// This code is contributed by m_kit.
?>

Javascript




// Javascript program to print
// matrix in zig-zag form
var MAX = 100;
 
    // Method to print matrix in zig-zag form
    var printZigZag = function(row, col, a)
    {
        var evenRow = 0; //starts from the first row
        var oddRow = 1; //starts from the next row
 
        while (evenRow<row)
        {
            for (var i = 0; i < col; i++)
            {
                // evenRow will be printed
                        // in the same direction
                document.write(a[evenRow][i]+ " ");
            }
             
            // Skipping next row so as
            // to get the next evenRow
            evenRow = evenRow + 2;
             
            if(oddRow < row)
            {
                for (var i = col - 1; i >= 0; i--)
                {
                 
                // oddRow will be printed in
                // the opposite direction
                console.log(a[oddRow][i]+" ");
                }
            }
         
            // Skipping next row so as
                // to get the next oddRow
            oddRow = oddRow + 2;
        }
    }
 
// Driver function
    var r = 3, c = 5;
    var mat = [ [1, 2, 3, 4, 5],
                        [6, 7, 8, 9, 10],
                        [11, 12, 13, 14, 15]];
 
    printZigZag(r , c , mat);
 
    // This code is contributed by Pushpesh Raj.

Output

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

Time Complexity: Time complexity of the above solution is O(row*column). 

Space Complexity: O(1) 

Related Articles:

This article is contributed by Kamal Rawal. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.


Last Updated : 10 Nov, 2022
Like Article
Save Article
Similar Reads
Related Tutorials