关于swap交换操作的新方法
Posted lbssxz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于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交换操作的新方法的主要内容,如果未能解决你的问题,请参考以下文章
关于错误 e297: write error in swap file;E297: 交换文件写入错误