Swap three variables without using temporary variable
Last Updated :
04 Nov, 2021
Given three variables, a, b and c, swap them without temporary variable.
Example :
Input : a = 10, b = 20 and c = 30
Output : a = 30, b = 10 and c = 20
Method 1 (Using Arithmetic Operators)
The idea is to get sum in one of the two given numbers. The numbers can then be swapped using the sum and subtraction from sum.
We have already discussed swapping two variables here. We can extend the same approaches
C++
// C++ program to swap three variables
// without using temporary variable.
#include <iostream>
using namespace std;
// Assign c's value to a, a's value to b and
// b's value to c.
void swapThree(int &a, int &b, int &c)
{
// Store sum of all in a
a = a + b + c; // (a = 60)
// After this, b has value of a
b = a - (b+c); // (b = 60 – (20+30) =10)
// After this, c has value of b
c = a - (b+c); // (c = 60 – (10 + 30) = 20)
// After this, a has value of c
a = a - (b+c); //(a = 60 – (10 + 20) = 30)
}
// Driver code
int main()
{
int a = 10, b = 20, c = 30;
cout << "Before swapping a = " << a << ", b = "
<< b << ", c = " << c << endl;
swapThree(a, b, c);
cout << "After swapping a = " << a << ", b = "
<< b << ", c = " << c << endl;
return 0;
}
Java
// Java program to swap three variables
// without using temporary variable.
class GFG
{
static int a, b, c;
// Assign c's value to a, a's value
// to b and b's value to c.
static void swapThree()
{
// Store sum of all in a
// (a = 60)
a = a + b + c;
// After this, b has value of a
// (b = 60 - (20 + 30) = 10)
b = a - (b + c);
// After this, c has value of b
// (c = 60 - (10 + 30) = 20)
c = a - (b + c);
// After this, a has value of c
// (a = 60 - (10 + 20) = 30)
a = a - (b + c);
}
// Driver Code
public static void main(String []args)
{
a = 10; b = 20; c = 30;
System.out.println("Before swapping a = " +
a + ", b = " + b +
", c = " + c);
// Calling Function
swapThree();
System.out.println("After swapping a = " +
a + ", b = " + b +
", c = " + c);
}
}
// This code is contributed by PrinciRaj1992
Python3
# python 3 program to swap three variables
# without using temporary variable.
# Assign c's value to a, a's value to b and
# b's value to c.
def swapThree(a, b, c):
# Store sum of all in a
a = a + b + c # (a = 60)
# After this, b has value of a
b = a - (b+c) # (b = 60 – (20+30) =10)
# After this, c has value of b
c = a - (b+c) # (c = 60 – (10 + 30) = 20)
# After this, a has value of c
a = a - (b+c) #(a = 60 – (10 + 20) = 30)
print("After swapping a =",a,", b =",b,", c =",c)
# Driver code
if __name__ == '__main__':
a = 10
b = 20
c = 30
print("Before swapping a =",a,", b =",b,", c =",c)
swapThree(a, b, c)
# This code is contributed by
# Surendra_Gangwar
C#
// C# program to swap three variables
// without using temporary variable.
using System;
class GFG
{
// Assign c's value to a, a's value
// to b and b's value to c.
static void swapThree(ref int a,
ref int b,
ref int c)
{
// Store sum of all in a
// (a = 60)
a = a + b + c;
// After this, b has value of a
// (b = 60 – (20 + 30) = 10)
b = a - (b + c);
// After this, c has value of b
// (c = 60 – (10 + 30) = 20)
c = a - (b + c);
// After this, a has value of c
// (a = 60 – (10 + 20) = 30)
a = a - (b + c);
}
// Driver Code
static void Main(String []args)
{
int a = 10, b = 20, c = 30;
Console.WriteLine("Before swapping a = " +
a + ", b = " + b +
", c = " + c);
// Calling Function
swapThree(ref a, ref b,ref c);
Console.Write("After swapping a = " +
a + ", b = " + b +
", c = " + c);
}
}
// This code is contributed by Sam007.
PHP
<?php
// PHP program to swap three
// variables without using
// temporary variable.
// Assign c's value to a,
// a's value to b and
// b's value to c.
function swapThree(&$a, &$b, &$c)
{
// Store sum of all in a
$a = $a + $b + $c; // (a = 60)
// After this, b has value of a
// (b = 60 – (20+30) =10)
$b = $a - ($b + $c);
// After this, c has value of b
// (c = 60 – (10 + 30) = 20)
$c = $a - ($b + $c);
// After this, a has value of c
//(a = 60 – (10 + 20) = 30)
$a = $a - ($b + $c);
}
// Driver Code
$a = 10; $b = 20; $c = 30;
echo "Before swapping a = " , $a ,
", b = ", $b , ", c = " ,
$c ,"\n";
swapThree($a, $b, $c);
echo "After swapping a = ",$a ,
", b = ", $b ,
", c = ", $c , "\n";
// This code is contributed by ajit
?>
JavaScript
<script>
// javascript program to swap three variables
// without using temporary variable.
let a, b, c;
// Assign c's value to a, a's value
// to b and b's value to c.
function swapThree()
{
// Store sum of all in a
// (a = 60)
a = a + b + c;
// After this, b has value of a
// (b = 60 - (20 + 30) = 10)
b = a - (b + c);
// After this, c has value of b
// (c = 60 - (10 + 30) = 20)
c = a - (b + c);
// After this, a has value of c
// (a = 60 - (10 + 20) = 30)
a = a - (b + c);
}
// Driver Code
a = 10; b = 20; c = 30;
document.write("Before swapping a = " +
a + ", b = " + b +
", c = " + c);
// Calling Function
swapThree();
document.write("<br>After swapping a = " +
a + ", b = " + b +
", c = " + c);
// This code contributed by Princi Singh
</script>
Output :
Before swapping a = 10, b = 20, c = 30
After swapping a = 30, b = 10, c = 20
Time Complexity: O(1)
Auxiliary Space: O(1)
Thanks to Mazhar MIK for suggesting this method.
Method 2 (Using Bitwise XOR)
The bitwise XOR operator can be used to swap three variables. The idea is similar to method 1. We first store XOR of all numbers in 'a'. Then we get individual numbers by doing XOR of this with other two numbers.
C++
// C++ program to swap three variables
// without using temporary variable
#include <iostream>
using namespace std;
// Assign c's value to a, a's value to b and
// b's value to c.
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;
}
// Driver code
int main()
{
int a = 10, b = 20, c = 30;
cout << "Before swapping a = " << a << ", b = "
<< b << ", c = " << c << endl;
swapThree(a, b, c);
cout << "After swapping a = " << a << ", b = "
<< b << ", c = " << c << endl;
return 0;
}
Java
// Java program to swap three variables
// without using temporary variable.
class GFG
{
static int a, b, c;
// Assign c's value to a, a's value
// to b and b's value to c.
static void swapThree()
{
// 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;
}
// Driver Code
public static void main(String[] args)
{
a = 10;
b = 20;
c = 30;
System.out.println("Before swapping a = " + a +
", b = " + b + ",c = " + c);
// Calling Function
swapThree();
System.out.println("After swapping a = " + a +
", b = " + b + ", c = " + c);
}
}
// This code is contributed by Rajput-Ji
Python3
# Python program to swap three variables
# without using temporary variable
# Assign c's value to a, a's value to b and
# b's value to c.
def swapThree(a, b, c) :
# Store XOR of all in a
a[0] = a[0] ^ b[0] ^ c[0]
# After this, b has value of a[0]
b[0] = a[0] ^ b[0] ^ c[0]
# After this, c has value of b
c[0] = a[0] ^ b[0] ^ c[0]
# After this, a[0] has value of c
a[0] = a[0] ^ b[0] ^ c[0]
# Driver code
a, b, c = [10], [20], [30]
print("Before swapping a = ", a[0],
", b = ", b[0], ", c = ", c[0])
swapThree(a, b, c)
print("After swapping a = ", a[0],
", b = ", b[0], ", c = ", c[0])
# This code is contributed by SHUBHAMSINGH10
C#
// C# program to swap three variables
// without using temporary variable.
using System;
class GFG
{
// Assign c's value to a, a's value
// to b and b's value to c.
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;
}
// Driver Code
static void Main(String []args)
{
int a = 10, b = 20, c = 30;
Console.WriteLine( "Before swapping a = " +
a +", b = " + b +
",c = " + c);
// Calling Function
swapThree(ref a, ref b,ref c);
Console.Write("After swapping a = " +
a +", b = " + b +
", c = " + c);
}
}
// This code is contributed by Sam007.
PHP
<?php
//PHP program to swap three variables
// without using temporary variable
// Assign c's value to a, a's value to b and
// b's value to c.
function 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;
}
// Driver code
$a = 10; $b = 20; $c = 30;
echo "Before swapping a = " , $a , ", b = ",
$b , ", c = " , $c ,"\n";
swapThree($a, $b, $c);
echo "After swapping a = ", $a , ", b = ",
$b , ", c = " , $c ,"\n";
#This code is contributed by ajit
?>
JavaScript
<script>
// javascript program to swap three variables
// without using temporary variable.
var a, b, c;
// Assign c's value to a, a's value
// to b and b's value to c.
function swapThree()
{
// 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;
}
// Driver Code
a = 10;
b = 20;
c = 30;
document.write("Before swapping a = " + a +
", b = " + b + ", c = " + c);
// Calling Function
swapThree();
document.write("<br>")
document.write("After swapping a = " + a +
", b = " + b + ", c = " + c);
// This code contributed by Princi Singh
</script>
Output:
Before swapping a = 10, b = 20, c = 30
After swapping a = 30, b = 10, c = 20
Time Complexity: O(1)
Auxiliary Space: O(1)
The method 1 causes overflow for large values of a, b and c, while method 2 doesn't.
Similar Reads
Swapping four variables without temporary variable
Suppose we have four variables a, b, c, d and we want to perform swapping of these variables in the following manner a = b, b = c, c = d, d = a without using any other fifth or temporary variable Solution : Step 1. Swap a and b without using any other variable a = a + b b = a - b a = a - b Step 2. S
7 min read
Reverse string without using any temporary variable
We are given a string. We are also given indexes of first and last characters in string. The task is to reverse the string without using any extra variable. Examples: Input : str = "abc" Output : str = "cba" Input : str = "GeeksforGeeks" Output : str = "skeeGrofskeeG" If we take a look at program to
4 min read
Javascript program to swap two numbers without using temporary variable
To swap two numbers without using a temporary variable, we have multiple approaches. In this article, we are going to learn how to swap two numbers without using a temporary variable. Below are the approaches used to swap two numbers without using a temporary variable: Table of Content Using Arithme
6 min read
Assign other value to a variable from two possible values
Suppose a variable x can have only two possible values a and b, and you wish to assign to x the value other than its current one. Do it efficiently without using any conditional operator.Note: We are not allowed to check current value of x. Examples: Input : a = 10, b = 15, x = a Output : x = 15 Exp
9 min read
Lexicographically smallest permutation of the array possible by at most one swap
Given an array arr[] representing a permutation of first N natural numbers, the task is to find the lexicographically smallest permutation of the given array arr[] possible by swapping at most one pair of array elements. If it is not possible to make the array lexicographically smaller, then print "
8 min read
Find the Array element after Q queries based on the given conditions
Given an array arr[] of length N and Q queries of 3 types (1, 2, 3) whose operations are as follows: Type 1: query has input as 1 and the task is to reverse the array.Type 2: query has input as (2 x) and the task to find the index of x in the result array.Type 3: query has input as (3 x y) and the t
10 min read
Swap Nodes in Binary tree of every k'th level
Given a binary tree and integer value k, the task is to swap sibling nodes of every k'th level where k >= 1. Examples: Input : k = 2 and Root of below tree 1 Level 1 / \ 2 3 Level 2 / / \ 4 7 8 Level 3 Output : Root of the following modified tree 1 / \ 3 2 / \ / 7 8 4 Explanation : We need to swa
14 min read
Minimum swaps required to convert one binary string to another
Given two binary string M and N of equal length, the task is to find a minimum number of operations (swaps) required to convert string N to M. Examples: Input: str1 = "1101", str2 = "1110" Output: 1 Swap last and second last element in the binary string, so that it become 1101 Input: str1 = "1110000
5 min read
Swap given nodes in a Doubly Linked List without modifying data
Given a doubly linked list having all unique elements and two keys X and Y, the task is to swap nodes for two given keys by changing links only. Note: It may be considered that X and Y are always present in the list. Examples: Input: list = 1 <-> 8 <-> 7 <-> 9 <-> 4, X = 1, Y
11 min read
Sorting Array with Two Swaps
Given an array A[] that represents a permutation of the N numbers, the task is to determine if it's possible to sort the array using two swaps. If it is not possible return false otherwise return true. Examples: Input: N = 4, A[] = {4, 3, 2, 1}Output: TrueExplanation: Swap(A[1], A[4]), now A[] = {1,
7 min read