交换到位

Jon*_*ony 3 sorting

如何在不使用任何额外空间的情况下在内部交换两个数字?

cod*_*ict 5

您可以使用XOR运算符来执行以下操作:

if( x != y) { // this check is very important.

  x ^= y;
  y ^= x;
  x ^= y;
}
Run Code Online (Sandbox Code Playgroud)

编辑:

如果没有额外的检查,上面的逻辑就无法将数字与自身交换.例:

int x = 10;
Run Code Online (Sandbox Code Playgroud)

如果我应用上面的逻辑x与自己交换,没有检查我最终有x=0,这是不正确的.

类似地,如果我在没有检查函数的情况下放入逻辑并调用函数将两个引用交换到同一个变量,它就会失败.