Given an array of integers, print the array in such a way that the first element is first maximum and second element is first minimum and so on.
Examples :
Input : arr[] = {7, 1, 2, 3, 4, 5, 6}
Output : 7 1 6 2 5 3 4
Input : arr[] = {1, 6, 9, 4, 3, 7, 8, 2}
Output : 9 1 8 2 7 3 6 4
A simple solution is to first print maximum element, then minimum, then second maximum, and so on. Time complexity of this approach is O(n2).
An efficient solution involves following steps.
- Sort input array using a O(n Log n) algorithm.
- We maintain two pointers, one from beginning and one from end in sorted array. We alternatively print elements pointed by two pointers and move them toward each other.
Implementation:
C++
#include <bits/stdc++.h>
using namespace std;
void alternateSort( int arr[], int n)
{
sort(arr, arr+n);
int i = 0, j = n-1;
while (i < j) {
cout << arr[j--] << " " ;
cout << arr[i++] << " " ;
}
if (n % 2 != 0)
cout << arr[i];
}
int main()
{
int arr[] = {1, 12, 4, 6, 7, 10};
int n = sizeof (arr)/ sizeof (arr[0]);
alternateSort(arr, n);
return 0;
}
|
Java
import java.io.*;
import java.util.Arrays;
class AlternativeString
{
static void alternateSort( int arr[], int n)
{
Arrays.sort(arr);
int i = 0 , j = n- 1 ;
while (i < j) {
System.out.print(arr[j--] + " " );
System.out.print(arr[i++] + " " );
}
if (n % 2 != 0 )
System.out.print(arr[i]);
}
public static void main (String[] args)
{
int arr[] = { 1 , 12 , 4 , 6 , 7 , 10 };
int n = arr.length;
alternateSort(arr, n);
}
}
|
Python3
def alternateSort(arr, n):
arr.sort()
i = 0
j = n - 1
while (i < j):
print (arr[j], end = " " )
j - = 1
print (arr[i], end = " " )
i + = 1
if (n % 2 ! = 0 ):
print (arr[i])
arr = [ 1 , 12 , 4 , 6 , 7 , 10 ]
n = len (arr)
alternateSort(arr, n)
|
C#
using System;
class AlternativeString {
static void alternateSort( int [] arr, int n)
{
Array.Sort(arr);
int i = 0, j = n - 1;
while (i < j) {
Console.Write(arr[j--] + " " );
Console.Write(arr[i++] + " " );
}
if (n % 2 != 0)
Console.WriteLine(arr[i]);
}
public static void Main()
{
int [] arr = { 1, 12, 4, 6, 7, 10 };
int n = arr.Length;
alternateSort(arr, n);
}
}
|
PHP
<?php
function alternateSort( $arr , $n )
{
sort( $arr );
$i = 0;
$j = $n - 1;
while ( $i < $j )
{
echo $arr [ $j --]. " " ;
echo $arr [ $i ++]. " " ;
}
if ( $n % 2 != 0)
echo $arr [ $i ];
}
$arr = array (1, 12, 4, 6, 7, 10);
$n = sizeof( $arr ) / sizeof( $arr [0]);
alternateSort( $arr , $n );
?>
|
Javascript
<script>
function alternateSort(arr, n)
{
console.log(arr);
arr.sort( function (a, b)
{
return a - b;
});
console.log(arr);
var i = 0,
j = n - 1;
while (i < j)
{
document.write(arr[j--] + " " );
document.write(arr[i++] + " " );
}
if (n % 2 != 0) document.write(arr[i]);
}
var arr = [1, 12, 4, 6, 7, 10];
var n = arr.length;
alternateSort(arr, n);
</script>
|
Time Complexity: O(n Log n)
Auxiliary Space : O(1), since no extra space has been taken.
This article is contributed by Sachin Bisht.
Last Updated :
21 Aug, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...