關於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異或出本身的值。

完結。

/滑稽/

相關文章
相關標籤/搜索