Related Articles

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

• Difficulty Level : Easy
• Last Updated : 21 Apr, 2021

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, 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`

## Javascript

 ``
Output:
`2 1 4 5 3`

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

Attention reader! Don’t stop learning now. Participate in the Scholorship Test for First-Step-to-DSA Course for Class 9 to 12 students.

My Personal Notes arrow_drop_up