交換兩個變量的值,本質上就是交換兩個變量所對內存地址中的數據。
實現該過程有多種算法,如中間變量法,算術運算法,按位異或法等等。
中間變量法
這種方法較為常見,並且適用於所有類型的變量交換。但是要分配一個臨時變量的空間。
優點:適用性強,適用面廣。
缺點:需要另外建立一個中間變量。
范圍:所有變量。
1 temp=a; 2 a=b; 3 b=temp;
交換思想就像是交換兩個碗里的水,比較符合我們日常生活經驗。
算術運算法
運用一系列算術運算交換變量,它不用創建一個空間來儲存臨時變量。
加減法
優點:不用臨時變量,方便理解記憶。
缺點:有數據溢出的風險,只適用於基本類型。
范圍:基本類型。
1 a=a+b; 2 b=a-b; 3 a=a-b;
例,a=5,b=6。
a=5+6
b=(5+6)-6
a=(5+6)-5
乘除法
優點:不用臨時變量。
缺點:有數據溢出的風險,只適用於浮點型數據。
范圍:浮點型數據。
1 a=a*b; 2 b=a/b; 3 a=a/b;
例,a=5,b=6。
a=5*6
b=(5*6)/6
a=(5*6)/5
按位異或法
該算法利用了一個數連續與另一個數異或兩次,就能還原的性質。
優點:不用臨時變量,無溢出風險。
缺點:太復雜,只適用於基本類型。
范圍:基本類型。
1 a=a^b; 2 b=a^b; 3 a=a^b;
例 a=0101
b=0110
a=a^b=0011
a=a^b=0101