三種交換變數的方法

Mine268發表於2020-10-07

交換變數

以下約定要交換的兩個變數為 x , y

第三者交換法

定義第三個變數,用於交換兩個變數的值。

var tmp = x;
x = y;
y = x;

加法交換法

這種方法通過加法的運算來交換變數,但是要注意這種方法有侷限性

  • 不能交換非數字型別的變數
  • 對於浮點型別的變數可能會出現問題
  • 加法過程中可能會出現超出上限的問題
x = x + y;
y = x - y;
x = x - y;

異或交換法

通過異或運算的性質得到的一種交換方法,這種交換方法有一定的侷限性

  • 只能用於交換可以進行異或運算的資料型別
  • 如果 x , y 指向同一個記憶體地址,則異或交換法失效

x ⊕ y ⊕ y = x x\oplus y\oplus y=x xyy=x

x = x ^ y;
y = x ^ y;
x = x ^ y;

總結

綜上所述,第三者交換法應用場景最廣泛,異或次之,再者是加法交換法,應當根據不同場景分別使用。

相關文章