关于swap交换操做的新方法

swap:spa

 

 在oi中,swap用于交换两个变量的数值。3d

初学oi时,咱们这样操做:code

 

 也就是说,须要一个temp变量来寄存x或y的值,由于当一个变量被赋值成为另外一个变量时,没有temp它的值会丢失。blog

貌似很基础的亚子。io

进阶版:class

进阶版swap不在须要中间变量temp,常数也更优:基础

具体是这样的:变量

int sswap(int &x, int &y)
{
     x ^= y ^= x ^= y ;
}

原理:一个数通过两次异或后,等于本身:原理

 

 实在不理解手动膜你啦。进阶

因而咱们把上面的式子疯狂展开:

 

 还不理解的话:

这里temp就是第一步x^y的值,把他们不一样的部分做为中间变量,从而在上方第3,4行分别以第一步的x值为temp异或出本身的值。

完结。

/滑稽/

相关文章
相关标签/搜索