不使用其他變數,交換兩個變數的值

2021-08-22 09:21:12 字數 537 閱讀 3758

不使用其他變數,交換兩個變數的值。

/** 方法壹。

** 因為異或運算滿足交換律和結合律,且 a^a = 0, 0^a = a,

* 所以用下面過程可以交換 a, b: (用 a, b 表示原始的 a, b 值)

* 1) a = a^b

* 2) b = a^b // b = a^b = (a^b)^b = a^(b^b) = a^0 = a

* 3) a = a^b // a = a^b = (a^b)^a = (b^a)^a = b^(a^a) = b^0 = b

*/void swap_in_space(int & a, int & b)

/* 方法貳。 */

void swap_in_space(int & a, int & b)

注:1. 方法壹比方法貳高效。

2. 方法貳中的加法操作有溢位的可能,但在此題中溢位不影響結果的正確性。

3. 方法貳中的加減可以分別替換成乘除,但效率更低,而且此時溢位會影響結果的正確性。

參考:1.

2.

不使用中間變數交換兩個變數的值詳解

交換兩個int型別數字的值,最簡單的方式就是使用乙個臨時變數 public static void swap1 int a,int i,int j 如果不使用臨時變數,我們也可以交換 public static void swap2 int a,int i,int j 注意異或運算子有這樣乙個規律 ...

不使用臨時變數交換兩個整數變數

先看一下交換變數的常規方式 public static void swap1 輸出 i 1,j 5 i 5,j 1使用臨時變數儲存一下其中乙個值,這種方法所有人都知道,且可以交換任何變數。如果是int或者long等整數變數,還可以通過以下方式交換 public static void swap2 輸...

不使用中間變數實現兩個變數的交換

在實現程式功能時,我們經常要進行變數數值的交換,最近學習到在c語言中不用定義新變數來實現兩個變數數值的交換的方法,跟大家分享一下!下面是演算法的實現 include int main 程式可能有點難理解。在順序結構程式中,程式一條一條的依次執行。為了避免值和變數名的混淆,假定使用者輸入的是a0和b0...