目的:實現兩個變數值的交換(以int 型別為例)。
方法一:使用臨時變數。
優點:安全,適合任何型別資料交換,無溢位風險。
缺點:保守、效率不高,需要使用第三方臨時變數(棧空間)。
1void swap_value( int *var1, int *var2)
2
方法二:利用+ - 算術運算實現。
優點:不需要額外的臨時變數。
缺點:有溢位風險。
1void swap_value( int *var1, int *var2)
2
方法三:利用位運算(異或)實現。
優點:不需要額外的臨時變數,位操作效率高。
缺點:浮點型資料(浮點型資料儲存方式比較特殊)無法交換。
1/****異或******/2
/****a與b連續異或兩次則 a = b****/3
40 ^ 1 = 1;5
0 ^ 0 = 0;6
1 ^ 0 = 1;7
1 ^ 1 = 0;
1void swap_value( int *var1, int *var2)
2
2016-01-14 by tid at shenzhen futian
swap交換兩個變數
最簡單的交換兩個變數值是用指標。void swap int a,int b work 這裡有個問題,一定要想清楚。為什麼在函式體內不能交換指標了?變成這樣 void swap int a,int b will not work在swap函式裡,a and b 都會產生乙個copy來,那你tmp a ...
交換兩個變數方法
將兩個變數的值互換,相當簡單的問題。假設有變數a b int a int b 方法1 將a b的值互換,為 int tmp a a b b tmp 然而,如果要求不用中間變數,就交換變數的值,該怎麼做呢?乙個比較有效率且眾所周知的方法就是 方法2 三次異或操作 int a 10,b 12 a 101...
交換兩個變數效率問題
首先宣告,在物件導向盛行的時代裡,我改用物件這兩個詞來指代最廣泛的變數。現在的變數就不一定只是乙個整型或浮點型,甚至不是乙個基本資料型別。我們 將在更廣泛的意義上討論物件交換的問題。在前一篇文章 關於兩個物件交換的問題 注意,名稱已改 中,我們討論了交換兩個變數 的幾種方法,並給出了形式化的公式。而...