Related Articles

# Print array elements in alternatively increasing and decreasing order

• Difficulty Level : Easy
• Last Updated : 11 Aug, 2021

Given an array of N elements. The task is to print the array elements in such a way that first two elements are in increasing order, next 3 in decreasing order, next 4 in increasing order and so on.

Examples

Input : arr = {2, 6, 2, 4, 0, 1, 4, 8, 2, 0, 0, 5}
Output : 0 0 8 6 5 0 1 2 2 4 4 2 2 2

Input : arr = {1, 2, 3, 4, 5, 6}
Output : 1 2 6 5 4 3

Source :Oracle Interview experience set 52
The idea is to use 2 pointer technique. First sort the array in increasing order and maintain two pointers and where is to print the array in increasing order and to print the array in decreasing order. Keep a variable to specify the number of elements to be printed in an iteration and a variable flag to switch between printing in increasing order and decreasing order alternatively.

Below is the implementation of above approach:

## C++

 `// C++ program to print array elements in``// alternative increasing and decreasing``// order` `#include ``using` `namespace` `std;` `// Function to print array elements in``// alternative increasing and decreasing``// order``void` `printArray(``int` `arr[], ``int` `n)``{``    ``// First sort the array in increasing order``    ``sort(arr, arr + n);` `    ``int` `l = 0, r = n - 1, flag = 0, i;` `    ``// start with 2 elements in``    ``// increasing order``    ``int` `k = 2;` `    ``// till all the elements are not printed``    ``while` `(l <= r) {``        ``// printing the elements in``        ``// increasing order``        ``if` `(flag == 0) {``            ``for` `(i = l; i < l + k && i <= r; i++)``                ``cout << arr[i] << ``" "``;` `            ``flag = 1;``            ``l = i;``        ``}``        ``else` `// printing the elements in``        ``// decreasing order``        ``{``            ``for` `(i = r; i > r - k && i >= l; i--)``                ``cout << arr[i] << ``" "``;` `            ``flag = 0;``            ``r = i;``        ``}` `        ``// increasing the number of elements``        ``// to printed in next iteration``        ``k++;``    ``}``}` `// Driver Code``int` `main()``{``    ``int` `n = 6;` `    ``int` `arr[] = { 1, 2, 3, 4, 5, 6 };` `    ``printArray(arr, n);` `    ``return` `0;``}`

## Java

 `// Java program to print array elements in``// alternative increasing and decreasing``// order``import` `java.util.*;``class` `Solution``{`` ` `// Function to print array elements in``// alternative increasing and decreasing``// order``static` `void` `printArray(``int` `arr[], ``int` `n)``{``    ``// First sort the array in increasing order``    ``Arrays.sort(arr);`` ` `    ``int` `l = ``0``, r = n - ``1``, flag = ``0``, i;`` ` `    ``// start with 2 elements in``    ``// increasing order``    ``int` `k = ``2``;`` ` `    ``// till all the elements are not printed``    ``while` `(l <= r) {``        ``// printing the elements in``        ``// increasing order``        ``if` `(flag == ``0``) {``            ``for` `(i = l; i < l + k && i <= r; i++)``                ``System.out.print(arr[i] + ``" "``);`` ` `            ``flag = ``1``;``            ``l = i;``        ``}``        ``else` `// printing the elements in``        ``// decreasing order``        ``{``            ``for` `(i = r; i > r - k && i >= l; i--)``                ``System.out.print(arr[i] + ``" "``);`` ` `            ``flag = ``0``;``            ``r = i;``        ``}`` ` `        ``// increasing the number of elements``        ``// to printed in next iteration``        ``k++;``    ``}``}`` ` `// Driver Code``public` `static` `void` `main(String args[])``{``    ``int` `n = ``6``;`` ` `    ``int` `arr[] = { ``1``, ``2``, ``3``, ``4``, ``5``, ``6` `};`` ` `    ``printArray(arr, n);`` `  `}` `}``//contributed by Arnab Kundu`

## Python3

 `# Python 3 program to print array elements``# in alternative increasing and decreasing``# order` `# Function to print array elements in``# alternative increasing and decreasing``# order``def` `printArray(arr, n):` `    ``# First sort the array in``    ``# increasing order``    ``arr.sort()` `    ``l ``=` `0``    ``r ``=` `n ``-` `1``    ``flag ``=` `0``    ` `    ``# start with 2 elements in``    ``# increasing order``    ``k ``=` `2` `    ``# till all the elements are not printed``    ``while` `(l <``=` `r) :``        ` `        ``# printing the elements in``        ``# increasing order``        ``if` `(flag ``=``=` `0``):``            ``i ``=` `l``            ``while` `i < l ``+` `k ``and` `i <``=` `r:``                ``print``(arr[i], end ``=` `" "``)``                ``i ``+``=` `1` `            ``flag ``=` `1``            ``l ``=` `i``        ` `        ``else``:     ``# printing the elements in``                 ``# decreasing order``            ``i ``=` `r``            ``while` `i > r ``-` `k ``and` `i >``=` `l:``                ``print``(arr[i], end ``=` `" "``)``                ``i ``-``=` `1` `            ``flag ``=` `0``            ``r ``=` `i` `        ``# increasing the number of elements``        ``# to printed in next iteration``        ``k ``+``=` `1` `# Driver Code``if` `__name__ ``=``=` `"__main__"``:``    ` `    ``n ``=` `6``    ``arr ``=` `[ ``1``, ``2``, ``3``, ``4``, ``5``, ``6` `]``    ``printArray(arr, n)` `# This code is contributed by ita_c`

## C#

 `// C# program to print array elements in``// alternative increasing and decreasing``// order``using` `System;`` ` `class` `GFG{``     ` `// Function to print array elements in``// alternative increasing and decreasing``// order``static` `void` `printArray(``int` `[]arr, ``int` `n)``{``    ` `    ``// First sort the array``    ``// in increasing order``    ``Array.Sort(arr);`` ` `    ``int` `l = 0, r = n - 1, flag = 0, i;`` ` `    ``// start with 2 elements in``    ``// increasing order``    ``int` `k = 2;`` ` `    ``// till all the elements``    ``// are not printed``    ``while` `(l <= r) {``        ` `        ``// printing the elements in``        ``// increasing order``        ``if` `(flag == 0) {``            ` `            ``for` `(i = l; i < l + k && i <= r; i++)``                    ``Console.Write(arr[i] + ``" "``);`` ` `            ``flag = 1;``            ``l = i;``        ``}``        ``else``        ` `        ``// printing the elements in``        ``// decreasing order``        ``{``            ``for` `(i = r; i > r - k && i >= l; i--)``                ``Console.Write(arr[i] + ``" "``);`` ` `            ``flag = 0;``            ``r = i;``        ``}`` ` `        ``// increasing the number of elements``        ``// to printed in next iteration``        ``k++;``    ``}``}`` ` `// Driver Code``static` `public` `void` `Main ()``{``         ` `    ``int` `n = 6;``    ``int` `[]arr = { 1, 2, 3, 4, 5, 6 };``    ``printArray(arr, n);` `}``}` `// This code is contributed by Sach_Code`

## PHP

 ` ``\$r` `- ``\$k` `&&``                 ``\$i` `>= ``\$l``; ``\$i``--)``                ``echo` `\$arr``[``\$i``] , ``" "``;` `            ``\$flag` `= 0;``            ``\$r` `= ``\$i``;``        ``}` `        ``// increasing the number of elements``        ``// to printed in next iteration``        ``\$k``++;``    ``}``}` `// Driver Code``\$n` `= 6;``\$arr` `= ``array``( 1, 2, 3, 4, 5, 6 );` `printArray(``\$arr``, ``\$n``);` `// This code is contributed by jit_t``?>`

## Javascript

 ``
Output:
`1 2 6 5 4 3`

Time Complexity : O(nlogn)
Auxiliary Space: O(1)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

My Personal Notes arrow_drop_up