2010年9月15日 星期三

[筆記]不用第三個變數,交換兩個數值的方法

今天翻到一段程式碼,想不起來這是在做些什麼?
後來終於找到這段程式是在做交換兩個數值,
而且,不宣告第三個變數!
其實好像也不是什麼大不了的東西,
不過還是筆記一下,人老了越來越會忘東忘西...

不宣告第三個變數暫存的方式
int a = 10;
int b = 5;

a ^= b;
b ^= a;
a ^= b;

結果就會從 a = 10, b = 5,
變成 a = 5, b = 10

宣告第三個變數暫存的方式
int a = 10;
int b = 5;
int temp;

temp = a;
a = b;
b = temp;

一樣的結果,不一樣的寫法,
簡單來說前者就是拿時間換空間,
後者就是拿空間換時間。