2011-12-20 92 views
1

可能重複:
What is the fastest way to swap values in C?交換兩個整數值的最佳方法是什麼?

我需要交換兩個整數的值(例如x和y) 這是最簡單的方法:

int temp = x; 
x = y; 
y = temp; 

和我還發現了一個更好的方法:

x = x + y; 
y = x - y; 
x = x - y; 

有沒有更好的方法來提高性能?

+0

在什麼語言? – 2011-12-20 05:57:01

+4

有**沒有可能的方式** *這些代碼段*是您的應用程序的瓶頸。 – 2011-12-20 05:57:16

+2

除非你因好奇而問這個問題,否則就是在浪費精力。相信你的編譯器爲這樣一個微不足道的操作生成高效的代碼。 C,C++,C#,Java中的 – 2011-12-20 05:58:02

回答

3

它是更多鈔票與XOR^」 運營商:

a = a^b; 
    b = a^b; 
    a = a^b; 
+0

是的,XOR比+運算符快。謝謝。 – shift66 2011-12-20 06:06:40

+2

'a^= b^= a^= b';) – COD3BOY 2011-12-20 06:08:00

+4

@Ademiban:引自wiki「大多數現代編譯器都可以優化幼稚交換中的臨時變量,在這種情況下,幼稚交換使用相同數量的內存,與XOR交換相同數量的寄存器,並且速度至少一樣快,而且速度通常更快。「 – 2011-12-20 06:11:30

1

那麼在第二個選項中,第一個選項中使用2個變量而不是3個,這意味着您分配的內存更少。

+0

是的,我想知道有沒有更好的方法?說,與兩個操作員一起做。 – shift66 2011-12-20 06:01:39

相關問題