Shuffle the position of each Array element by swapping adjacent elements (original) (raw)

Last Updated : 15 Jul, 2025

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 <bits/stdc++.h> 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[0]);

// 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

`

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