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

2021-10-04 23:12:26 字數 1099 閱讀 4154

交換兩個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 其正確性是因為異或運算滿足 交換律和 結合律。證...