给定三个变量a,b和c,将它们交换而没有临时变量。
例子 :
Input : a = 10, b = 20 and c = 30
Output : a = 30, b = 10 and c = 20
方法1(使用算术运算符)
这个想法是获得两个给定数字之一的和。然后可以使用总和与总和相减来交换数字。
我们已经在这里讨论了交换两个变量。我们可以扩展相同的方法
C++
// C++ program to swap three variables
// without using temporary variable.
#include
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
Javascript
C++
// C++ program to swap three variables
// without using temporary variable
#include
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
Javascript
输出 :
Before swapping a = 10, b = 20, c = 30
After swapping a = 30, b = 10, c = 20
感谢Mazhar MIK提出了这种方法。
方法2(使用按位XOR)
按位XOR运算符可用于交换三个变量。这个想法类似于方法1。我们首先将所有数字的XOR存储在’a’中。然后,我们通过与其他两个数字进行XOR运算得到单个数字。
C++
// C++ program to swap three variables
// without using temporary variable
#include
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
Java脚本
输出:
Before swapping a = 10, b = 20, c = 30
After swapping a = 30, b = 10, c = 20