交换两个变量的值,本质上就是交换两个变量所对内存地址中的数据。
实现该过程有多种算法,如中间变量法,算术运算法,按位异或法等等。
中间变量法
这种方法较为常见,并且适用于所有类型的变量交换。但是要分配一个临时变量的空间。
优点:适用性强,适用面广。
缺点:需要另外建立一个中间变量。
范围:所有变量。
1 temp=a;2 a=b;3 b=temp;
交换思想就像是交换两个碗里的水,比较符合我们日常生活经验。
算术运算法
运用一系列算术运算交换变量,它不用创建一个空间来储存临时变量。
加减法
优点:不用临时变量,方便理解记忆。
缺点:有数据溢出的风险,只适用于基本类型。
范围:基本类型。
1 a=a+b;2 b=a-b;3 a=a-b;
例,a=5,b=6。
a=5+6
b=(5+6)-6
a=(5+6)-5
乘除法
优点:不用临时变量。
缺点:有数据溢出的风险,只适用于浮点型数据。
范围:浮点型数据。
1 a=a*b;2 b=a/b;3 a=a/b;
例,a=5,b=6。
a=5*6
b=(5*6)/6
a=(5*6)/5
按位异或法
该算法利用了一个数连续与另一个数异或两次,就能还原的性质。
优点:不用临时变量,无溢出风险。
缺点:太复杂,只适用于基本类型。
范围:基本类型。
1 a=a^b;2 b=a^b;3 a=a^b;
例 a=0101
b=0110
a=a^b=0011
a=a^b=0101