在交換兩個數的值時,最經常使用的方法是借助於乙個中間變數來進行交換。temp = a;
a = b;
b = temp;
通過巧妙的加法與減法運算來實現兩個數的交換。a = a + b;
b = a - b;
a = a - b;
使用位運算(異或)來交換兩個數。a = a ^ b;
b = a ^ b;
a = a ^ b;
其正確性是因為異或運算滿足
交換律和
結合律。
證明:b = (a ^ b) ^ b = a ^ (b ^ b) = a ^ 0 = a;
a = (a ^ b) ^ a = (b ^ a) ^ a = b ^ (a ^ a) = b ^ 0 = b;
這裡有乙個非常容易忽視的陷阱:
當a與b的值相等時,這種方法的結果是將a與b的值都置零。因此要想使用這種方法,要先判斷a與b的值是否相等。
第一種方法需要乙個中間變數temp,但是可以處理所有型別的資料。第二種和第三種方法不需要中間變數。第二種方法也可以處理簡單資料型別,但是有可能會溢位。第三種方法效率高且不用擔心溢位,但是僅僅適用於整形。
不使用中間變數交換兩個數
在交換兩個數的值時,最經常使用的方法是借助於乙個中間變數來進行交換。temp a a b b temp 通過巧妙的加法與減法運算來實現兩個數的交換。a a b b a b a a b 使用位運算 異或 來交換兩個數。a a b b a b a a b 其正確性是因為異或運算滿足 交換律和 結合律。證...
18 不使用中間變數,實現兩個數的交換 JAVA
1 普通的方法,使用乙個中間變數temp,可以使用引用 void swap int a,int b 輸出結果為 4 4 不使用中間變數,使用加減的方法 void swap int a,int b a a b b a b a a b 以上三句等於 a a b a b 5 不使用中間變數,使用乘除的方法...
不使用中間變數交換兩數
交換兩個數的值是比較基礎也比較常用的演算法,比如在氣泡排序法中,從第一數開始比較,如後乙個數比其小則交換兩數的值。一般在交換兩數的值是,最簡單的方法適用的方法就是用中間變數暫存乙個數。例如,要交換a,b的值,可使用中間變數c暫存其中的乙個數。核心 如下 c b b a a b 當然也可以不使用中間變...