博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
交换两个变量的值
阅读量:5232 次
发布时间:2019-06-14

本文共 661 字,大约阅读时间需要 2 分钟。

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

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


 

中间变量法

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

 

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

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

范围:所有变量。

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

 

转载于:https://www.cnblogs.com/jawide/p/10588354.html

你可能感兴趣的文章
Java内部类详解
查看>>
python-基础
查看>>
17 案例
查看>>
【BZOJ 1221】 [HNOI2001] 软件开发
查看>>
【hdu 1429】胜利大逃亡(续)
查看>>
SQL字符型转日期型
查看>>
Java程序设计教程(第2版)阅读总结
查看>>
图论-次短路求法
查看>>
ios下opencv编译merge函数报错问题
查看>>
What's New for Visual C# 6.0
查看>>
ExtJs学习笔记之ComboBox组件
查看>>
关于收费软件
查看>>
getopt_long
查看>>
HTML5中File
查看>>
TensorFlow MNIST CNN 代码
查看>>
javascript之Style物
查看>>
兼容所有浏览器的实时监听输入的解决方案(转)
查看>>
JSON跨域解决方案收集
查看>>
【转】linux dumpe2fs命令
查看>>
SSH框架整合总结
查看>>