# Shuffle the position of each Array element by swapping adjacent elements

Given an array arr[], the task is to rearrange the array elements by swapping adjacent elements such that no element remains at same position after swapping.

Examples:

Input: arr[] = { 1, 2, 3, 4, 5 }
Output: 2 1 5 3 4
Explanation:
Adjacent elements are swapped as follows:
(1, 2 -> 2, 1)
(3, 4, 5 -> 5, 3, 4)

Input: arr[] = {1, 2, 3, 4}
Output: 2 1 4 3
Explanation:
Adjacent elements are swapped as follows:
1, 2 -> 2, 1
3, 4 -> 4, 3

Approach: The key observation in the problem is that there can be two cases for the arrays to swap the array elements:

Below is the implementation of the above approach:

## C++

 `// C++ program for the above approach  ` `#include   ` `using` `namespace` `std;  ` ` `  `// Function to print the array  ` `void` `print(``int` `a[], ``int` `n)  ` `{  ` `    ``// Loop to iterate over the  ` `    ``// elements of array  ` `    ``for` `(``int` `i = 0; i < n; i++)  ` `        ``cout << a[i] << ``" "``;  ` `}  ` ` `  `// Function to swap two variables without  ` `// using the third variable  ` `void` `swapTwo(``int``& x, ``int``& y)  ` `{  ` `    ``// Store XOR of all in x  ` `    ``x = x ^ y;  ` ` `  `    ``// After this, y has value of x  ` `    ``y = x ^ y;  ` ` `  `    ``// After this, x has value of y  ` `    ``x = x ^ y;  ` `}  ` ` `  `// Function to swap three variables  ` `// without using fourth variable  ` `void` `swapThree(``int``& a, ``int``& b, ``int``& c)  ` `{  ` `    ``// Store XOR of all in a  ` `    ``a = a ^ b ^ c;  ` ` `  `    ``// After this, b has value of a  ` `    ``b = a ^ b ^ c;  ` ` `  `    ``// After this, c has value of b  ` `    ``c = a ^ b ^ c;  ` ` `  `    ``// After this, a has value of c  ` `    ``a = a ^ b ^ c;  ` `}  ` ` `  `// Function that swaps n integers  ` `void` `rearrangeArray(``int` `a[], ``int` `n)  ` `{  ` `    ``if` `(n % 2 == 0) {  ` ` `  `        ``for` `(``int` `i = 0; i < n - 1; i += 2) {  ` `            ``// Swap 2 variables without  ` `            ``// using 3rd variable  ` `            ``swapTwo(a[i], a[i + 1]);  ` `        ``}  ` `    ``}  ` `    ``else` `{  ` `        ``for` `(``int` `i = 0; i < n - 3; i += 2) {  ` `            ``// Swap 2 variables without  ` `            ``// using 3rd variable  ` `            ``swapTwo(a[i], a[i + 1]);  ` `        ``}  ` ` `  `        ``// The last 3 elements will not form  ` `        ``// pair if n is odd  ` `        ``// Hence, swapp 3 variables without  ` `        ``// using 4th variable  ` `        ``swapThree(a[n - 1], a[n - 2], a[n - 3]);  ` `    ``}  ` ` `  `    ``// Print the array elements  ` `    ``print(a, n);  ` `}  ` ` `  `// Driver Code  ` `int` `main()  ` `{  ` `    ``// Given array arr[]  ` `    ``int` `arr[] = { 1, 2, 3, 4, 5 };  ` `    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr);  ` ` `  `    ``// Function Call  ` `    ``rearrangeArray(arr, n);  ` `    ``return` `0;  ` `}  `

## Java

 `// Java program for the above approach  ` `import` `java.util.*; ` `import` `java.lang.*; ` ` `  `class` `GFG{ ` `     `  `// Function to print the array  ` `static` `void` `print(``int` `a[], ``int` `n)  ` `{  ` `     `  `    ``// Loop to iterate over the  ` `    ``// elements of array  ` `    ``for``(``int` `i = ``0``; i < n; i++)  ` `        ``System.out.print(a[i] + ``" "``);  ` `}  ` ` `  `// Function to swap two variables without  ` `// using the third variable  ` `static` `void` `swapTwo(``int` `x, ``int` `y, ``int``[] a)  ` `{  ` `     `  `    ``// Store XOR of all in x  ` `    ``a[x] = a[x] ^ a[y];  ` ` `  `    ``// After this, y has value of x  ` `    ``a[y] = a[x] ^ a[y];  ` ` `  `    ``// After this, x has value of y  ` `    ``a[x] = a[x] ^ a[y];  ` `}  ` ` `  `// Function to swap three variables  ` `// without using fourth variable  ` `static` `void` `swapThree(``int` `x, ``int` `y, ` `                      ``int` `z, ``int``[] a)  ` `{  ` `     `  `    ``// Store XOR of all in a  ` `    ``a[x] = a[x] ^ a[y] ^ a[z];  ` ` `  `    ``// After this, b has value of a  ` `    ``a[y] = a[x] ^ a[y] ^ a[z];  ` ` `  `    ``// After this, c has value of b  ` `    ``a[z] = a[x] ^ a[y] ^ a[z];  ` ` `  `    ``// After this, a has value of c  ` `    ``a[x] = a[x] ^ a[y] ^ a[z];  ` `}  ` ` `  `// Function that swaps n integers  ` `static` `void` `rearrangeArray(``int` `a[], ``int` `n)  ` `{  ` `    ``if` `(n % ``2` `== ``0``)  ` `    ``{  ` `        ``for``(``int` `i = ``0``; i < n - ``1``; i += ``2``) ` `        ``{ ` `             `  `            ``// Swap 2 variables without  ` `            ``// using 3rd variable  ` `            ``swapTwo(i, i + ``1``, a);  ` `        ``}  ` `    ``}  ` `    ``else`  `    ``{  ` `        ``for``(``int` `i = ``0``; i < n - ``3``; i += ``2``)  ` `        ``{ ` `             `  `            ``// Swap 2 variables without  ` `            ``// using 3rd variable  ` `            ``swapTwo(i, i + ``1``, a);  ` `        ``}  ` ` `  `        ``// The last 3 elements will not form  ` `        ``// pair if n is odd  ` `        ``// Hence, swapp 3 variables without  ` `        ``// using 4th variable  ` `        ``swapThree(n - ``1``, n - ``2``, n - ``3``, a);  ` `    ``}  ` ` `  `    ``// Print the array elements  ` `    ``print(a, n);  ` `}  ` `     `  `// Driver code ` `public` `static` `void` `main (String[] args) ` `{ ` `     `  `    ``// Given array arr[]  ` `    ``int` `arr[] = { ``1``, ``2``, ``3``, ``4``, ``5` `};  ` `    ``int` `n = arr.length;  ` `     `  `    ``// Function call  ` `    ``rearrangeArray(arr, n);      ` `} ` `} ` ` `  `// This code is contributed by offbeat`

## Python3

 `# Python3 program for the above approach  ` ` `  `# Function to print the array  ` `def` `print1(a, n): ` ` `  `    ``# Loop to iterate over the  ` `    ``# elements of array  ` `    ``for` `i ``in` `range``(n): ` `        ``print``(a[i], end ``=` `" "``) ` ` `  `# Function to swap two variables without  ` `# using the third variable  ` `def` `swapTwo(x, y): ` ` `  `    ``# Store XOR of all in x  ` `    ``x ``=` `x ^ y ` ` `  `    ``# After this, y has value of x  ` `    ``y ``=` `x ^ y ` ` `  `    ``# After this, x has value of y  ` `    ``x ``=` `x ^ y  ` `     `  `    ``return` `x, y ` ` `  `# Function to swap three variables  ` `# without using fourth variable  ` `def` `swapThree(a, b, c): ` ` `  `    ``# Store XOR of all in a  ` `    ``a ``=` `a ^ b ^ c ` ` `  `    ``# After this, b has value of a  ` `    ``b ``=` `a ^ b ^ c ` ` `  `    ``# After this, c has value of b  ` `    ``c ``=` `a ^ b ^ c ` ` `  `    ``# After this, a has value of c  ` `    ``a ``=` `a ^ b ^ c ` ` `  `    ``return` `a , b , c ` ` `  `# Function that swaps n integers  ` `def` `rearrangeArray(a, n): ` ` `  `    ``if` `(n ``%` `2` `=``=` `0``): ` `        ``for` `i ``in` `range` `(``0``, n ``-` `1``, ``2``): ` `             `  `            ``# Swap 2 variables without  ` `            ``# using 3rd variable  ` `            ``a[i], a[i ``+` `1``] ``=` `swapTwo(a[i], a[i ``+` `1``]) ` `         `  `    ``else``: ` `        ``for` `i ``in` `range``(``0``, n ``-` `3``, ``2``): ` `             `  `            ``# Swap 2 variables without  ` `            ``# using 3rd variable  ` `            ``a[i], a[i ``+` `1``] ``=` `swapTwo(a[i], a[i ``+` `1``]) ` ` `  `        ``# The last 3 elements will not form  ` `        ``# pair if n is odd  ` `        ``# Hence, swapp 3 variables without  ` `        ``# using 4th variable  ` `        ``a[n ``-` `1``], a[n ``-` `2``], a[n ``-` `3``] ``=` `swapThree(a[n ``-` `1``], ` `                                                 ``a[n ``-` `2``], ` `                                                 ``a[n ``-` `3``]) ` ` `  `    ``# Print the array elements  ` `    ``print1(a, n) ` ` `  `# Driver Code  ` `if` `__name__ ``=``=` `"__main__"``: ` ` `  `    ``# Given array arr[]  ` `    ``arr ``=` `[``1``, ``2``, ``3``, ``4``, ``5` `] ` `    ``n ``=` `len``(arr) ` ` `  `    ``# Function call  ` `    ``rearrangeArray(arr, n) ` ` `  `# This code is contributed by chitranayal `

## C#

 `// C# program for the above approach ` `using` `System; ` ` `  `class` `GFG{ ` ` `  `// Function to print the array ` `static` `void` `print(``int` `[]a, ``int` `n) ` `{ ` `     `  `    ``// Loop to iterate over the ` `    ``// elements of array ` `    ``for``(``int` `i = 0; i < n; i++) ` `        ``Console.Write(a[i] + ``" "``); ` `} ` ` `  `// Function to swap two variables without ` `// using the third variable ` `static` `void` `swapTwo(``ref` `int` `x, ``ref` `int` `y) ` `{ ` `     `  `    ``// Store XOR of all in x ` `    ``x = x ^ y; ` ` `  `    ``// After this, y has value of x ` `    ``y = x ^ y; ` ` `  `    ``// After this, x has value of y ` `    ``x = x ^ y; ` `} ` ` `  `// Function to swap three variables ` `// without using fourth variable ` `static` `void` `swapThree(``ref` `int` `a, ``ref` `int` `b,  ` `                      ``ref` `int` `c) ` `{ ` `     `  `    ``// Store XOR of all in a ` `    ``a = a ^ b ^ c; ` ` `  `    ``// After this, b has value of a ` `    ``b = a ^ b ^ c; ` ` `  `    ``// After this, c has value of b ` `    ``c = a ^ b ^ c; ` ` `  `    ``// After this, a has value of c ` `    ``a = a ^ b ^ c; ` `} ` ` `  `// Function that swaps n integers ` `static` `void` `rearrangeArray(``int` `[]a, ``int` `n) ` `{ ` `    ``if` `(n % 2 == 0) ` `    ``{ ` `        ``for``(``int` `i = 0; i < n - 1; i += 2)  ` `        ``{ ` `             `  `            ``// Swap 2 variables without ` `            ``// using 3rd variable ` `            ``swapTwo(``ref` `a[i], ``ref` `a[i + 1]); ` `        ``} ` `    ``} ` `    ``else` `    ``{ ` `        ``for``(``int` `i = 0; i < n - 3; i += 2)  ` `        ``{ ` `             `  `            ``// Swap 2 variables without ` `            ``// using 3rd variable ` `            ``swapTwo(``ref` `a[i], ``ref` `a[i + 1]); ` `        ``} ` ` `  `        ``// The last 3 elements will not form ` `        ``// pair if n is odd ` `        ``// Hence, swapp 3 variables without ` `        ``// using 4th variable ` `        ``swapThree(``ref` `a[n - 1], ``ref` `a[n - 2],  ` `                  ``ref` `a[n - 3]); ` `    ``} ` ` `  `    ``// Print the array elements ` `    ``print(a, n); ` `} ` ` `  `// Driver Code ` `public` `static` `void` `Main(``string` `[]s) ` `{ ` `     `  `    ``// Given array arr[] ` `    ``int` `[]arr = { 1, 2, 3, 4, 5 }; ` `    ``int` `n = arr.Length; ` ` `  `    ``// Function call ` `    ``rearrangeArray(arr, n); ` `} ` `} ` ` `  `// This code is contributed by rutvik_56 `

Output:

```2 1 4 5 3
```

Time Complexity: O(N)
Auxiliary Space: O(1)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Improved By : rutvik_56, chitranayal, offbeat