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

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

假设需要交换的两个数为 a, b

使用中间变量

-------------| a | b | t |-------------

使用一个中间变量来做媒介来交换,设中间变量为t;则通过 a -> t; b -> a; t -> b 完成了交换,代码如下

var t = a;a = b;b = t;

不使用中间变量

a = a + b;b = a - b;a = a - b;

初看起来可能比较迷糊,下面分析一下,假设内存结构如下

a1    a2---------| a | b |---------
  1. 先把两个的和保存进a所在的位置 a + b -> a1,状态改变如下

    a1        a2-------------| a + b | b |-------------
  2. 现在a1位置已经为a+b了,减去一个b便变成了a,然后放在a2位置,现在状态如下

    a1        a2-------------| a + b | a |-------------
  3. 最后用a1所在位置的数减去a2所在位置的数也即 a + b - a = b,放进a1,完成交换

    a1    a2---------| b | a |---------

其实就是把两数先累加放在其中一个位置,再用这个位置的数减去两次另一个位置的数

转载地址:http://aqnsa.baihongyu.com/

你可能感兴趣的文章
bbb板运行rtems-编写led底层驱动
查看>>
如何从零安装Mysql
查看>>
Appium简介及工作原理
查看>>
IP 类型转换
查看>>
mysql实践1
查看>>
struts2 Preparable接口
查看>>
hdu4578(线段树)
查看>>
写一个脚本简单检测局域网存活的机器
查看>>
Dubbo
查看>>
angular与jquery 进行json提交数据,报文头格式不一致的解决方案
查看>>
更换笔记本内存:自己动手修电脑(一)
查看>>
POJ2262-Goldbach's Conjecture
查看>>
区分扫描枪输入和键盘输入的实现
查看>>
【ssh服务配置】
查看>>
【mongdb主从复制和同步】
查看>>
下载文件downloadFile
查看>>
课后作业-阅读任务-阅读笔记-3
查看>>
hdoj1078(介绍记忆化搜索及其模板)
查看>>
cf-Round542-Div2-B(贪心)
查看>>
有关Python的PIL库的学习体会和实例
查看>>