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
Swap Two Numbers Without Using Third Variable Given two variables a and y, swap two variables without using a third variable. Examples: Input: a = 2, b = 3Output: a = 3, b = 2Input: a = 20, b = 0Output: a = 0, b = 20Input: a = 10, b = 10Output: a = 10, b = 10Table of ContentUsing Arithmetic OperatorsUsing Bitwise XORBuilt-in SwapUsing Arithmeti
6 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
Swap Two Variables in One Line We have discussed different approaches to swap two integers without the temporary variable. How to swap into a single line without using the library function?1) Python: In Python, there is a simple and syntactically neat construct to swap variables, we just need to write "x, y = y, x".2) C/C++: Belo
4 min read