【发布时间】:2018-04-03 10:09:49
【问题描述】:
有人问我一个问题,即在不使用临时变量的情况下交换两个数字。用以下答案很容易回答这个问题。
与临时变量交换
int a =10;
int b =20;
int temp = a;
a = b;
b = temp;
没有临时变量的交换
int a =10;
int b =20;
a = a+b;
b = a-b;
a = a-b;
它有效,但在性能方面哪个更好?我认为只有一次操作性能无关紧要。但是,如果我需要使用这种交换方法或在需要交换等的选择排序期间反转大量数字,创建局部变量更好还是使用算术运算来完成?
【问题讨论】:
-
你问的是Java还是Javascript?它们是完全不同的语言。这看起来像 Java 而不是 Javascript - 如果您实际上只对 Java 感兴趣,请删除 Javascript 标记。
-
第一个更具可读性。考虑它不应该对性能产生太大影响
-
在您发布的示例中没有临时变量的交换很容易出现overflow issues。这在 Java 中无关紧要,但其他语言可能会有问题。
标签: java performance reverse swap