您的当前位置:首页正文

编程中如何不使用中间变量的情况下将两个变量的值进行交换

2024-11-21 来源:个人技术集锦

一点回忆

故事继续,后来接触了编程,在入门时,又碰到了这个问题,只不过,这一次需要自己动手编写代码来解决了。

使用中间变量交换两个变量

这是比较普遍的算法。

// 采用Java语言相应实现
public static void main(String[] args) {
	int a = 11;
	int b = 22;
	System.out.println("交换前:变量a=" + a + ",变量b=" + b);
	
	// 引入中间变量,交换两个变量a、b的值
	int t;
	t = b;
	b = a;
	a = t;
	System.out.println("交换后:变量a=" + a + ",变量b=" + b);
}

输出结果如下图所示:

不使用中间变量交换两个变量

最初看到“不使用中间变量交换两个变量”时,还是挺不解。很好奇不使用中间变量时,会怎么解决,最后看了实现方案,还是有点感叹方案的精巧的。有的方案采用简单的加减法运算达到交换的目的,有的方案则采用异或运算达到。

1. 采用加减法运算交换两个变量
// 采用Java语言相应实现
public static void main(String[] args) {
	int a = 11;
	int b = 22;
	System.out.println("交换前:变量a=" + a + ",变量b=" + b);
	
	// 不使用中间变量,使用加减法运算,交换两个变量a、b的值
	a = a + b;
	b = a - b; // b = (a + b) - b ==> b = a, 即a交换到了b
	a = a - b; // a = (a + b) - a ==> a = b, 即b交换到了a
	System.out.println("交换后:变量a=" + a + ",变量b=" + b);
}

输出结果如下图所示:

2. 采用异或运算交换两个变量
// 采用Java语言相应实现
public static void main(String[] args) {
	int a = 11;
	int b = 22;
	System.out.println("交换前:变量a=" + a + ",变量b=" + b);
	
	// 不使用中间变量,使用异或运算,交换两个变量a、b的值
	a = a ^ b;
	b = a ^ b;
	a = a ^ b;
	System.out.println("交换后:变量a=" + a + ",变量b=" + b);
}

输出结果如下图所示:

参考资料

显示全文