Thursday, 24 August 2017

Given an array of distinct elements, rearrange the elements of array in zig-zag fashion in O(n) time.

The converted array should be in form       a < b > c < d > e < f.
 
Example: 
Input:  arr[] = {4, 3, 7, 8, 6, 2, 1}
Output: arr[] = {3, 7, 4, 8, 2, 6, 1}

Input:  arr[] =  {1, 4, 3, 2}
Output: arr[] =  {1, 4, 2, 3}


#include<stdio.h>
void zigzag(int[],int);
void main()
{
    int num,i;
    scanf("%d",&num);
    int a[num];
    for(i=0;i<num;i++)
        scanf("%d",&a[i]);
    zigzag(a,num);
    for(i=0;i<num;i++)
        printf("%d ",a[i]);
}
void zigzag(int a[],int num)
{
    int i,flag=1,temp;
    for(i=0;i<=num-2;i++)
    {
        if(flag)
        {
            if(a[i]>a[i+1])
            {
                temp=a[i];
                a[i]=a[i+1];
                a[i+1]=temp;

            }
        }
        else
        {
            if(a[i]<a[i+1])
            {
                temp=a[i];
                a[i]=a[i+1];
                a[i+1]=temp;
            }
        }
        flag=!flag;
    }
}

No comments:

Post a Comment