不用第三个变量,直接交换两个变量的值
发布日期:2021-06-28 21:59:49
浏览次数:2
分类:技术文章
本文共 693 字,大约阅读时间需要 2 分钟。
记得曾经看过不用引进第三个变量而直接变换两个变量的值的例子。见过的两种方法如下:
方法一:
var a=1;
var b=2;
a=a+b;
b=a-b;
a=a-b;
输出a,b可以发现两值已经交换
方法二:
var a=1;
var b=2;
a=a^b;
b=a^b;
a=a^b;
输出a,b可以发现两值已经交换
这两种方法表面看起来只是一种技巧,有点小伎俩了,不过在嵌入式的开发上,却有着极大的作用。因为在嵌入式开发中,空间有限,引入的变量越少,节省的空间也就越多,开发的可利用空间就相对变大了。所以这种技巧是十分常用的一种技巧。
对于以上两种方法简单分析如下:
方法一中逻辑思维表现得相对明显一些,可理解性容易一些。方法二在速度上相对快一些,因为是直接利用位运算,所以在时间上表现略有优势。
从数学角度考虑,其实这两种技巧中都蕴含了集合论的数学思想。可以这样理解,在方法一中把a+b看作一个大的集合,而从这个集合中减掉一个,所剩下的差集就是另外的一个变量了。同样的方式,在a+b中减掉另外的一个,也就实现了二者变量值的变换。对于方法二,由于是用数学中的异或运算,所以反复利用可以得到预期的效果。
基于以上分析,可以知道许多开发技巧可以来源于数学理论,这种基于数学理论的应用在技术开发上可以弄出很多东西来,在实际的应用中也有着现实性的意义。虽然“不用第三个变量,直接交换两个变量的值”的方法不是我想到的,不过相信有了强大数学理论背景之后,在开发以及其他创造性工作中,只要注意培养这种应用意识,我们也能创造出这种“伎俩”来,只要善于思考,善于总结,创造性思维还是可以培养出来的。
转载地址:https://blog.csdn.net/YEYUANGEN/article/details/21518509 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年04月05日 09时48分06秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
String特性之 “字符串驻留池”
2019-04-29
集合篇-----ArrayList与LinkedList之间的那些小事
2019-04-29
Linux系统的优点小结
2019-04-29
15个Google面试题,看看自己能答对几个,看你是否真的聪明。。。
2019-04-29
Clone使用方法详解
2019-04-29
Java clone() 浅克隆与深度克隆
2019-04-29
Java中对象与引用
2019-04-29
JDK 1.7 Integer.parseInt 源码解析
2019-04-29
Java单例模式
2019-04-29
三种方法拆分字符串
2019-04-29
贪心算法基本思想和典型例题
2019-04-29
坑爹的小学数学题
2019-04-29
快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值
2019-04-29
[经典排序算法][集锦]
2019-04-29
无处不在的二分查找
2019-04-29
Java集合框架List,Map,Set等全面介绍
2019-04-29
Java 泛型(二) 泛型之中的通配符(Wildcards)使用
2019-04-29
7-36 复数四则运算 (15 分)
2019-04-29
L1-002 打印沙漏 (20 分)
2019-04-29
L1-003 个位数统计 (15 分)
2019-04-29