交换两个数

假设须要交换的两个数为 a, bcode

使用中间变量

-------------
| 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;

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

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

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

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

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

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

相关文章
相关标签/搜索