Open In App

Program to print an array in Pendulum Arrangement

Last Updated : 16 Feb, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

Write a program to input a list of integers in an array and arrange them in a way similar to the to-and-fro movement of a Pendulum.

  • The minimum element out of the list of integers, must come in center position of array.
  • The number in the ascending order next to the minimum, goes to the right, the next higher number goes to the left of minimum number and it continues.
  • As higher numbers are reached, one goes to one side in a to-and-fro manner similar to that of a Pendulum.

Examples:  

Input : 1   3   2   5   4
Output :5   3   1   2   4
Explanation: 
The minimum element is 1, so it is moved to the middle.
The next higher element 2  is moved to the right of the 
middle element while the next higher element 3 is 
moved to the left of the middle element and 
this process is continued.

Input : 11   12   31   14   5
Output :31   12   5   11   14

The idea is to sort the array first. Once the array is sorted, use an auxiliary array to store elements one by one. 

Implementation:

C++




// C++ program for pendulum arrangement of numbers
#include <bits/stdc++.h>
using namespace std;
  
// Prints pendulum arrangement of arr[]
void pendulumArrangement(int arr[], int n)
{
    // sorting the elements
    sort(arr, arr+n);
  
    // Auxiliary array to store output
    int op[n];
  
    // calculating the middle index
    int mid = (n-1)/2;
  
    // storing the minimum element in the middle
    // i is index for output array and j is for
    // input array.
    int j = 1, i = 1;
    op[mid] = arr[0];
    for (i = 1; i <= mid; i++)
    {
        op[mid+i] = arr[j++];
        op[mid-i] = arr[j++];
    }
  
    // adjustment for when no. of elements is even
    if (n%2 == 0)
        op[mid+i] = arr[j];
  
  
    // Printing the pendulum arrangement
    cout << "Pendulum arrangement:" << endl;
    for (i = 0 ; i < n; i++)
        cout << op[i] << " ";
  
    cout << endl;
}
  
// Driver function
int main()
{
    //input Array
    int arr[] = {14, 6, 19, 21, 12};
  
    // calculating the length of array A
    int n = sizeof(arr)/sizeof(arr[0]);
  
    // calling pendulum function
    pendulumArrangement(arr, n);
  
    return 0;
}


Java




// Java program for pendulum arrangement of numbers
  
import java.util.Arrays;
  
class Test
{
    // Prints pendulum arrangement of arr[]
    static void pendulumArrangement(int arr[], int n)
    {
        // sorting the elements
        Arrays.sort(arr);
       
        // Auxiliary array to store output
        int op[] = new int[n];
       
        // calculating the middle index
        int mid = (n-1)/2;
       
        // storing the minimum element in the middle
        // i is index for output array and j is for
        // input array.
        int j = 1, i = 1;
        op[mid] = arr[0];
        for (i = 1; i <= mid; i++)
        {
            op[mid+i] = arr[j++];
            op[mid-i] = arr[j++];
        }
       
        // adjustment for when no. of elements is even
        if (n%2 == 0)
            op[mid+i] = arr[j];
       
       
        // Printing the pendulum arrangement
        System.out.println("Pendulum arrangement:");
        for (i = 0 ; i < n; i++)
            System.out.print(op[i] + " ");
       
        System.out.println();
    }
      
    // Driver method
    public static void main(String[] args) 
    {
        //input Array
        int arr[] = {14, 6, 19, 21, 12};
         
        // calling pendulum function
        pendulumArrangement(arr, arr.length);
    }
}


Python3




# Python 3 program for pendulum
# arrangement of numbers
  
# Prints pendulum arrangement of arr[]
def pendulumArrangement(arr, n):
  
    # sorting the elements
    arr.sort()
  
    # Auxiliary array to store output
    op = [0] * n
  
    # calculating the middle index
    mid = int((n-1)/2)
  
    # storing the minimum
        # element in the middle
    # i is index for output
        # array and j is for
    # input array.
    j = 1
    i = 1
    op[mid] = arr[0]
    for i in range(1,mid+1):
      
        op[mid+i] = arr[j]
        j+=1
        op[mid-i] = arr[j]
        j+=1
      
  
    # adjustment for when no.
        # of elements is even
    if (int(n%2) == 0):
        op[mid+i] = arr[j]
  
  
    # Printing the pendulum arrangement
    print("Pendulum arrangement:")
    for i in range(0,n):
        print(op[i],end=" ")
  
# Driver function
# input Array
arr = [14, 6, 19, 21, 12]
  
# calculating the length of array A
n = len(arr)
  
# calling pendulum function
pendulumArrangement(arr, n)
  
# This code is contributed by
# Smitha Dinesh Semwal


C#




// C# program for pendulum 
// arrangement of numbers
using System;
  
class Test {
      
    // Prints pendulum arrangement of arr[]
    static void pendulumArrangement(int []arr, 
                                    int n)
    {
          
        // sorting the elements
        Array.Sort(arr);
      
        // Auxiliary array to store output
        int []op = new int[n];
      
        // calculating the middle index
        int mid = (n - 1) / 2;
      
        // storing the minimum element in 
        // the middle i is index for output 
        // array and j is for input array.
        int j = 1, i = 1;
        op[mid] = arr[0];
        for (i = 1; i <= mid; i++)
        {
            op[mid + i] = arr[j++];
            op[mid - i] = arr[j++];
        }
      
        // adjustment for when no. 
        // of elements is even
        if (n % 2 == 0)
            op[mid + i] = arr[j];
      
      
        // Printing the pendulum arrangement
        Console.Write("Pendulum arrangement:");
        for (i = 0 ; i < n; i++)
            Console.Write(op[i] + " ");
      
        Console.WriteLine();
    }
      
    // Driver code
    public static void Main() 
    {
          
        //input Array
        int []arr = {14, 6, 19, 21, 12};
          
        // calling pendulum function
        pendulumArrangement(arr, arr.Length);
    }
}
  
// This code is contributed by Nitin Mittal.


PHP




<?php
// PHP program for pendulum 
// arrangement of numbers
  
// Prints pendulam arrangement of arr[]
function pendulumArrangement($arr, $n)
{
      
    // sorting the elements
    sort($arr, $n);
    sort($arr); 
  
    // Auxiliary array to
    // store output
    $op[$n] = NULL;
  
    // calculating the
    // middle index
    $mid = floor(($n - 1) / 2);
  
    // storing the minimum 
    // element in the middle
    // i is index for output
    // array and j is for
    // input array.
    $j = 1;
    $i = 1;
    $op[$mid] = $arr[0];
    for ($i = 1; $i <= $mid; $i++)
    {
        $op[$mid + $i] = $arr[$j++];
        $op[$mid - $i] = $arr[$j++];
    }
  
    // adjustment for when no. 
    // of elements is even
    if ($n % 2 == 0)
        $op[$mid + $i] = $arr[$j];
  
  
    // Printing the pendulum
    // arrangement
    echo "Pendulum arrangement:" ;
    for ($i = 0 ; $i < $n; $i++)
        echo $op[$i], " ";
  
    echo "\n";
}
  
    // Driver Code
    //input Array
    $arr = array(14, 6, 19, 21, 12);
  
    // calculating the length 
    // of array A
    $n = sizeof($arr);
  
    // calling pendulum function
    pendulumArrangement($arr, $n);
      
// This code is contributed by nitin mittal. 
?>


Javascript




<script>
      // JavaScript program for pendulum 
      // arrangement of numbers
  
      // Prints pendulam arrangement of arr[]
      function pendulumArrangement(arr, n) 
      {
          
        // sorting the elements
        arr.sort(function (a, b) {
          return a - b;
        });
  
        // Auxiliary array to store output
        var op = [...Array(n)];
  
        // calculating the middle index
        var mid = parseInt((n - 1) / 2);
  
        // storing the minimum element in the middle
        // i is index for output array and j is for
        // input array.
        var j = 1,
          i = 1;
        op[mid] = arr[0];
        for (i = 1; i <= mid; i++) {
          op[mid + i] = arr[j++];
          op[mid - i] = arr[j++];
        }
  
        // adjustment for when no. of elements is even
        if (n % 2 == 0) op[mid + i] = arr[j];
  
        // Printing the pendulum arrangement
        document.write("Pendulum arrangement:<br>");
        for (i = 0; i < n; i++) 
        document.write(op[i] + "  ");
  
        document.write("<br>");
      }
  
      // Driver function
        
      //input Array
      var arr = [14, 6, 19, 21, 12];
        
      // calculating the length of array A
      var n = arr.length;
        
      // calling pendulum function
      pendulumArrangement(arr, n);
    </script>


Output

Pendulum arrangement:
21 14 6 12 19 

Time Complexity: O(n*log(n)) where n is the size of the array.
Auxiliary Space: O(n)

 



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads