# C++ program to convert an array into Zig-Zag fashion

In this article, we will learn how to convert an array into zig-zag fashion in C++. Let’s consider an array arr with elements {a, b, c, d, e, f, g} the array is said to bein zig zag form when a<b>c<d>e<f>g.

## Zig-Zag Fashion array in C++

Method 1: Sorting array

1. Firstly sort the given array using sort() fucntion.

2.Iterate the array from range 1 to n-1

• Now swap(arr[i], arr[i+1])

4. Finally, print the array.

```#include <bits/stdc++.h>
using namespace std;

void zigZagArray(int arr[], int n){
sort(arr, arr+n);
int temp;
for(int i=1;i<n-1;i=i+2){
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
int main(){
int arr[] = {3, 2, 1, 7, 9};
int n = sizeof(arr)/sizeof(arr[0]);
zigZagArray(arr, n);
cout<<"Zig-Zag form of the given array is"<<endl;
for(int i =0;i<n;i++){
cout<<arr[i]<<" ";
}
return 0;
}```

Output

```Zig-Zag form of the given array is
1 3 2 9 7```

Time Complexity: O(nlogn) where n is the size of the array

Space Complexity: O(1)

Method 2:

1. Firstly, declare a boolean flag represents what operation(‘<‘ or ‘>’) we need to use right now.

2. Iterate the array from the range o to n-2

• If flag is true and (arr[i]>arr[i+1]) then swap( arr[i], arr[i+1]).
• If flag is false and (arr[i]<arr[i+1]) then swap (arr[i], arr[i+1]).

3. Finally, print the array.

```#include<bits/stdc++.h>
using namespace std;

// function to convert given array in zig zag fashion
void zigZagArray(int arr[], int n){
bool flag = true;
for(int i=0;i<=n-2;i++){
if (flag){
if (arr[i]>arr[i+1])
swap(arr[i], arr[i+1]);
}
else
{
if (arr[i]<arr[i+1])
swap(arr[i], arr[i+1]);
}
flag = !flag;
}
}
int main(){
int arr[] = {3, 12, 4, 2, 0, 1, -1};
int n = sizeof(arr)/sizeof(arr[0]);
zigZagArray(arr, n);
cout<<"Zig-Zag form of the given array is"<<endl;
for(int i =0;i<n;i++){
cout<<arr[i]<<" ";
}
return 0;
}```

Output

```Zig-Zag form of the given array is
3 12 2 4 0 1 -1```

Time complexity: O(n) where n is size of the array.

Space complexity: O(1)