交換兩個int型別數字的值,最簡單的方式就是使用乙個臨時變數
public
static
void
swap1
(int
a,int i,
int j)
如果不使用臨時變數,我們也可以交換
public
static
void
swap2
(int
a,int i,
int j)
}
注意異或運算子有這樣乙個規律:a=b^a^b
,並且它還滿**換律,b^b=0
,任何數和0異或結果還是他自己,當然我們還可以使用加減法來交換兩個數的值
public
static
void
swap3
(int
a,int i,
int j)
}
這裡如果a[i]和a[j]比較大的話,會出現溢位,但最終結果不會受影響,如果感興趣,把他們的二進位制表示的數字列印出來就明白了。我們來測試一下
public
static
void
main
(string[
] args)
; system.out.
println
("資料交換之前:"
+ arrays.
tostring
(a))
;swap3
(a,0,1
);system.out.
println
("資料交換之後:"
+ arrays.
tostring
(a))
;}
執行結果為
資料交換之前:[
2147483645
,2147483637
]資料交換之後:[
2147483637
,2147483645
]
不使用中間變數實現兩個變數的交換
在實現程式功能時,我們經常要進行變數數值的交換,最近學習到在c語言中不用定義新變數來實現兩個變數數值的交換的方法,跟大家分享一下!下面是演算法的實現 include int main 程式可能有點難理解。在順序結構程式中,程式一條一條的依次執行。為了避免值和變數名的混淆,假定使用者輸入的是a0和b0...
不使用中間變數交換兩個數
在交換兩個數的值時,最經常使用的方法是借助於乙個中間變數來進行交換。temp a a b b temp 通過巧妙的加法與減法運算來實現兩個數的交換。a a b b a b a a b 使用位運算 異或 來交換兩個數。a a b b a b a a b 其正確性是因為異或運算滿足 交換律和 結合律。證...
不使用中間變數交換兩個數
在交換兩個數的值時,最經常使用的方法是借助於乙個中間變數來進行交換。temp a a b b temp 通過巧妙的加法與減法運算來實現兩個數的交換。a a b b a b a a b 使用位運算 異或 來交換兩個數。a a b b a b a a b 其正確性是因為異或運算滿足 交換律和 結合律。證...