sorting - 原地交换

标签 sorting

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

最佳答案

你可以使用 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/

相关文章:

java - 如何在JAVA中一次传递一个类的两个单独实例来对该类中的一些数据进行排序

ios - 可以将 "self"与 NSSortDescriptor 一起使用以按对象本身而不是对象的属性进行排序吗? (核心数据/NSFetchedResultsController)

javascript - 单击图像更改图像和调用功能

arrays - 如何在不使用额外数组来分割初始数组的情况下进行合并排序?

java order arraylist string[] 按数字

java - 选择一个好的排序算法

c - 无法在快速排序中正确传递数组

c - 按字母顺序打印列表中的某些单词

sorting - 自然mergesort链表

javascript - 叠瓦式 javascript for 循环的简化