交換兩個變數

2022-04-12 08:02:31 字數 694 閱讀 6264

目的:實現兩個變數值的交換(以int 型別為例)。

方法一:使用臨時變數。

優點:安全,適合任何型別資料交換,無溢位風險。

缺點:保守、效率不高,需要使用第三方臨時變數(棧空間)。

1

void swap_value( int *var1, int *var2)

2

方法二:利用+ - 算術運算實現。

優點:不需要額外的臨時變數。

缺點:有溢位風險。

1

void 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;

1

void 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...

交換兩個變數效率問題

首先宣告,在物件導向盛行的時代裡,我改用物件這兩個詞來指代最廣泛的變數。現在的變數就不一定只是乙個整型或浮點型,甚至不是乙個基本資料型別。我們 將在更廣泛的意義上討論物件交換的問題。在前一篇文章 關於兩個物件交換的問題 注意,名稱已改 中,我們討論了交換兩個變數 的幾種方法,並給出了形式化的公式。而...