Swap Two Numbers Without Using Third Variable
Last Updated :
26 Dec, 2024
Improve
Try it on GfG Practice
Given two variables a and y, swap two variables without using a third variable.
Examples:
Input: a = 2, b = 3
Output: a = 3, b = 2Input: a = 20, b = 0
Output: a = 0, b = 20Input: a = 10, b = 10
Output: a = 10, b = 10
Table of Content
Using Arithmetic Operators
- Store the sum of a and b in a (a = a + b).
- Get the original value of a, that is (sum - original value of b)and store it in b (b = a - b).
- Get the original value of b, that is (sum - original value of a)and store it in a (a = a - b).
// C++ Code to swap two numbers using arithmetic operators
#include <iostream>
using namespace std;
int main() {
int a = 2, b = 3;
cout << "a = " << a << " b = " << b << endl;
a = a + b;
b = a - b;
a = a - b;
cout << "a = " << a << " b = " << b << endl;
return 0;
}
// C Code to swap two numbers using arithmetic operators
#include <stdio.h>
int main() {
int a = 2, b = 3;
printf("a = %d b = %d\n", a, b);
a = a + b;
b = a - b;
a = a - b;
printf("a = %d b = %d\n", a, b);
return 0;
}
// Java Code to swap two numbers using arithmetic operators
class GfG {
public static void main(String[] args) {
int a = 2, b = 3;
System.out.println("a = " + a + " b = " + b);
a = a + b;
b = a - b;
a = a - b;
System.out.println("a = " + a + " b = " + b);
}
}
# Python Code to swap two numbers using arithmetic operators
if __name__ == "__main__":
a = 2
b = 3
print("a =", a, " b =", b)
a = a + b
b = a - b
a = a - b
print("a =", a, " b =", b)
// C# Code to swap two numbers using arithmetic operators
using System;
class GfG {
static void Main() {
int a = 2, b = 3;
Console.WriteLine("a = " + a + " b = " + b);
// Swap a and b using arithmetic operators
a = a + b;
b = a - b;
a = a - b;
Console.WriteLine("a = " + a + " b = " + b);
}
}
// JavaScript Code to swap two numbers using arithmetic operators
let a = 2, b = 3;
console.log("a = " + a + " b = " + b);
a = a + b;
b = a - b;
a = a - b;
console.log("a = " + a + " b = " + b);
Output
a = 2 b = 3 a = 3 b = 2
Time Complexity: O(1)
Auxiliary Space: O(1)
Using Bitwise XOR
The idea is to use the properties of XOR to swap the two variables.
- a = a ^ b: Store the Bitwise XOR of a and b in a. Now, a holds the result of (a ^ b).
- b = a ^ b: Bitwise XOR the new value of a with b to get the original value of a. This gives us, b = (a ^ b) ^ b = a.
- a = a ^ b: Bitwise XOR the new value of a with the new value of b (which is the original a) to get the original value of b. This gives us, a = (a ^ b) ^ a = b.
Finally, a and b hold the swapped values.
// C++ Code to swap two numbers using bitwise XOR
#include <iostream>
using namespace std;
int main() {
int a = 2, b = 3;
cout << "a = " << a << " b = " << b << endl;
a = a ^ b;
b = a ^ b;
a = a ^ b;
cout << "a = " << a << " b = " << b << endl;
return 0;
}
// C Code to swap two numbers using bitwise XOR
#include <stdio.h>
int main() {
int a = 2, b = 3;
printf("a = %d b = %d\n", a, b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("a = %d b = %d\n", a, b);
return 0;
}
// Java Code to swap two numbers using bitwise XOR
class GfG {
public static void main(String[] args) {
int a = 2, b = 3;
System.out.println("a = " + a + " b = " + b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.println("a = " + a + " b = " + b);
}
}
# Python Code to swap two numbers using bitwise XOR
if __name__ == "__main__":
a = 2
b = 3
print("a =", a, " b =", b)
a = a ^ b
b = a ^ b
a = a ^ b
print("a =", a, " b =", b)
// C# Code to swap two numbers using bitwise XOR
using System;
class GfG {
static void Main() {
int a = 2, b = 3;
Console.WriteLine("a = " + a + " b = " + b);
// Swap a and b using arithmetic operators
a = a ^ b;
b = a ^ b;
a = a ^ b;
Console.WriteLine("a = " + a + " b = " + b);
}
}
// JavaScript Code to swap two numbers using bitwise XOR
let a = 2, b = 3;
console.log("a = " + a + " b = " + b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
console.log("a = " + a + " b = " + b);
Output
a = 2 b = 3 a = 3 b = 2
Time Complexity: O(1)
Auxiliary Space: O(1)
Built-in Swap
We can also swap using built-in functionalities like swap method in C++, tuple unpacking in Python, destructuring assignment in JavaScript. To know more about the implementation, please refer Swap Two Numbers.