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異或出本身的值。
完結。
/滑稽/