Skip to content
Related Articles

Related Articles

Improve Article

Print array elements in alternatively increasing and decreasing order

  • Difficulty Level : Easy
  • Last Updated : 10 May, 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 l  and r  where l  is to print the array in increasing order and r  to print the array in decreasing order. Keep a variable K  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 <bits/stdc++.h>
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




<?php
// PHP program to print array elements in
// alternative increasing and decreasing
// order
 
// Function to print array elements in
// alternative increasing and decreasing
// order
function printArray($arr, $n)
{
    // First sort the array in
    // increasing order
    sort($arr);
 
    $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)
        {
            for ($i = $l;
                 $i < $l + $k &&
                 $i <= $r; $i++)
                echo $arr[$i] , " ";
 
            $flag = 1;
            $l = $i;
        }
        else // printing the elements in
             // decreasing order
        {
            for ($i = $r;
                 $i > $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




<script>
 
// Javascript program to print array elements in
// alternative increasing and decreasing
// order
 
// Function to print array elements in
// alternative increasing and decreasing
// order
function printArray(arr, n)
{
     
    // First sort the array
    // in increasing order
    arr.sort();
 
    let l = 0, r = n - 1, flag = 0, i;
 
    // start with 2 elements in
    // increasing order
    let 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++)
                document.write(arr[i] + " ");
 
            flag = 1;
            l = i;
        }
        else
 
        // Printing the elements in
        // decreasing order
        {
            for(i = r; i > r - k && i >= l; i--)
                document.write(arr[i] + " ");
 
            flag = 0;
            r = i;
        }
 
        // Increasing the number of elements
        // to printed in next iteration
        k++;
    }
}
 
// Driver code
let n = 6;
let arr = [ 1, 2, 3, 4, 5, 6 ];
printArray(arr, n);
 
// This code is contributed by suresh07
 
</script>
Output: 
1 2 6 5 4 3

 

Time Complexity : O(nlogn)
 

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
Recommended Articles
Page :