我们大家通常常用的方法就是创建一个临时变量,因为如果直接交换在计算机中是会覆盖掉源数据的,所以需要一个临时变量来储存之前的数据。
假设a的值为10,b的值为5,交换过程就是先将变量a的值赋值给temp,再把变量b的值赋值给a,这样a原来的数据10虽然被覆盖,但是10也存在了temp变量中,再把变量temp的值赋值给b,就完成了对变量a、b值的交换。
但是无意间看到一种并不用创建临时变量就能交换的值的算法。
我们同样假设a的值为10,b的值为5。
第一步将a与b的和赋值给a,这时a的值为15,b的值为10。
第二步再将a-b的值赋值给b,此时b的值就为15-10=5,发现正好就是a的值。
第三步再将a-b的值赋给a,因为有了第二步的操作,所以此时b的值为5,a的值15-5=10,正好为b的值。
这样并不用创建临时变量,在极端的情况下可以省点内存。但这种情况只适用于数字,当我们在交换数组或是字符串等引用变量时,就不能使用这个算法了。
01-25
561
12-12
429