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

• Difficulty Level : Easy
• Last Updated : 26 Aug, 2022

Given an array arr[], the task is to rearrange the array elements by swapping adjacent elements such that no element remains at the 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, swap 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, swap 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, swap 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, swap 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`

## Javascript

 ``

Output:

`2 1 4 5 3`

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

My Personal Notes arrow_drop_up
Recommended Articles
Page :