交换两个变量的值的几种方法
如果说解决“交换两个变量的值”的问题也是算法的话,这大概是程序世界中最简单的算法了。即使是这样的算法,也有几种解决方法,下面来了解一下吧。
1. 利用中间变量temp作为临时变量交换数值,这是变量交换最简单最通用的方法。
说这个算法通用,是指其对数据类型没有特殊要求,八种基本类型byte, short, int, long, float, double, char, boolean都可以。
2. 可以用两个数求和然后相减的方式进行数据交换。
这个算法的弊端在于如果 x 和 y 的数值过大的话,超出 int 的值就会损失精度。
对于浮点型float和double,会因IEEE 754产生精度的问题。
对于boolean类型,加减号没定义所以也是不能用的。
3. 利用位运算的方式进行数据的交换,其原理是:一个数异或同一个数两次,结果还是原来那个数。
该算法的优势在于形式上比较好记,三个赋值语句的右边都是x^y;此外,异或运算最大的好处是直接进行二进制数据操作,转换的时间效率上还是比较高的。
这个算法不会有上面的加减算法损失精度的问题,但只对整型和boolean型有效,对于浮点型float和double,是没有不支持异或运算的。
总结一下,实现交换两个变量的值的常用算法有三种:利用中间变量、加减运算以及异或运算。
在实际软件开发当中,第1种算法,即利用中间变量的算法简单明了,不会产生歧义,而且适用面广,便于程序员之间的交流。 一般情况下(炫技除外:)),碰到交换变量值的问题,都应采用此算法,是一种标准算法。

浙公网安备 33010602011771号