仅使用两个变量交换两个数字

时间:2014-11-18 06:59:51

标签: algorithm swap

如何进行交换?

  

A = A + B

     

B = A + B

     

A = B + A

我不同意它换成书!

书籍选项包括" a和b"的值的补充。 ,"否定和b"。希望这些选项也不能令人满意吗???

6 个答案:

答案 0 :(得分:9)

正确的算法应该是:

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

答案 1 :(得分:7)

交换使用XOR执行,通常在圆圈内写为加号;例如:

a := 5
b := 7

a := a xor b (2)
b := a xor b (5)
a := b xor a (7)

答案 2 :(得分:0)

实际上,可以通过两种方式完成:

int a = 5, b = 10;

使用加法(+)和减法( - )

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

使用多个(*)和分区(/)

a = a * b;
b = a / b;
a = a / b;

答案 3 :(得分:0)

我最近接受了Java新生的面试,面试官要求我进行两个数字的交换(但只能换一行)。

也可以在一行中交换两个数字,而无需使用temp变量。

逻辑很简单,

x在同一行中与y相加,y被指定为x,并减去它们的总和。

执行这一行算术运算后,数字被交换了。 (仅一行)

public class SwapInOneLine {
public static void main(String[] args) {

    int x = 10; int y = 20;
    System.out.println("Before Swaping: x = " + x + " and y= " + y);
    x = x + y - (y = x);
    System.out.println("After Swaping: x = " + x + " and y= " + y);
}}

输出:

  

掉期前:x = 10,y = 20

     

交换后:x = 20,y = 10

答案 4 :(得分:0)

我们需要遵循3个步骤:-加,减和减。

您也可以选中此youtube video,其中更详细地说明了概念。

Swap 2 numbers with out using third variable

让我们说您想交换4和5。所以,

第1步(+):-首先将两个数字相加4 + 5 =9。然后用和替换一个数字。如果您在图片中看到我们已经替换了4。

第2步(-):-从较大的数字中减去较小的数字。因此9 -5 = 4并用该值替换其他数字。就像我用4代替5。

步骤3(-):-减去刚得到的另一个结果,并替换为9。然后将数字互换。

答案 5 :(得分:0)

我们可以为此使用XOR (^)。 XOR 的优点:由于 XOR 在位级上工作,因此它比任何其他操作花费的时间少得多。 如果 a = 5 且 b = 7 然后交换:

a = a ^ b

b = a ^ b

a = a ^ b

其中 '^' 表示 XOR。 结果 : a = 7 和 b = 5