如何在不使用任何额外空间的情况下就地交换两个数字?
最佳答案
你可以使用 XOR
运营商为:
if( x != y) { // this check is very important.
x ^= y;
y ^= x;
x ^= y;
}
编辑:
无需额外检查上述逻辑 无法与自身交换号码 .
例子:
int x = 10;
如果我应用上述逻辑来交换
x
用它自己,没有支票我最终得到了 x=0
,这是不正确的。同样,如果我将没有检查的逻辑放在函数中并调用该函数来交换对同一变量的两个引用,它就会失败。
关于sorting - 原地交换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2680232/