交换两个变量的值

交换两个变量的值,本质上就是交换两个变量所对内存地址中的数据

实现该过程有多种算法,如中间变量法,算术运算法,按位异或法等等。


 

中间变量法

这种方法较为常见,并且适用于所有类型的变量交换。但是要分配一个临时变量的空间。

 

优点:适用性强,适用面广。

缺点:需要另外建立一个中间变量。

范围:所有变量。

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

 

posted @ 2019-03-24 15:26  jawide  阅读(1470)  评论(0编辑  收藏  举报