标签:
大致分为3种方式实现:
1.通过中间变量方式实现。
C = A;
A = B;
B = C;
2.通过加法方式。
实现原理:比如A有5块钱,B有10快钱。此时要A,B交换,此时就先把钱给一个人,然后减去另一个人的金额。
比如先把钱给A(此时A中的钱为总金额),然后交换后B的钱就是总金额减去之前B给A的钱。
A = A+B;
B = A-B;
A = A-B;
此方法的缺点:会造成内存溢出的情况。
3.通过位运算,异或方式(相同为0,不同为1)。
首先需要了解异或运算的一些性质
a.任意一个变量X与其自身进行异或运算,结果为0,即X^X=0
b.任意一个变量X与0进行异或运算,结果不变,即X^0=X
c.异或运算具有可结合性,即a^b^c=(a^b)^c=a^(b^c)
d.异或运算具有可交换性,即a^b=b^a
根据以上异或运算的特性可以交换两个数据,效率比之前两种方式都要高。
IF(A==B)RETURN;//先要判断2值是否相等,否则会出错,如果相等也没有交换的意义。
A = A^B;
B = A^B;
A = A^B;
补充几点常用的位运算操作:
1.判断两个整数是否相等。
(A^B)==0;
2.判断一个数是奇数还是偶数。
A&1 == 0;//偶数
A&1 == 1;//奇数
标签:
原文地址:http://www.cnblogs.com/zhangygl/p/4296277.html