Alternate sorting: Given an array of integers, rearrange the array in such a way that the first element is first maximum and second element is first minimum.
Eg.) Input : {1, 2, 3, 4, 5, 6, 7}
Output : {7, 1, 6, 2, 5, 3, 4}
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,n,t,j;
scanf("%d",&n);
int *a=(int *)malloc(n*sizeof(int)); // creating dynamic array
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
//sorting
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(a[i]<a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
t=n-1;j=0;
//printing alternate min max
for(i=0;i<n;i++)
{
if(i%2!=0){
printf("%d ",a[j] ); ++j;}
else{
printf("%d ",a[t] ); --t;}
}
return 0;
}
OUTPUT :
Excellent blog.Really useful one
ReplyDelete