码迷,mamicode.com
首页 > 其他好文 > 详细

关于swap交换操作的新方法

时间:2019-10-27 13:04:34      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:变量   http   方法   它的   str   自己的   mamicode   ext   swap   

swap:

技术图片

 

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

初学oi时,我们这样操作:

技术图片

 

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

貌似很基础的亚子。

进阶版:

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

具体是这样的:

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

原理:一个数经过两次异或后,等于自己:

技术图片

 

 实在不理解手动膜你啦。

于是我们把上面的式子疯狂展开:

技术图片

 

 还不理解的话:

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

完结。

/滑稽/

关于swap交换操作的新方法

标签:变量   http   方法   它的   str   自己的   mamicode   ext   swap   

原文地址:https://www.cnblogs.com/lbssxz/p/11747047.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!