發表文章

目前顯示的是有「Algorithm」標籤的文章

Algorithm:Xor交換兩個數值變數

這是我今年春節看Java Puzzlers時才知道的技巧,有很大的delay,交換數值變數利用Xor運算就可以完成,就方法就。 b^=a; a^=b; b^=a; 這是利用xor的特性,將A xor B 或是 B xor A都會得到一個相同的值 C。若將這個值跟 A 作xor運算,就會得到 B;而若是將其跟 B 作xor運算,則會得到 A。 A xor B = C C xor B = A C xor A = B 在密碼學中,資料與key的混合也常常用xor運算達到還原的效果。 這個方法的優點是不消耗額外記憶體空間,只需要a和b兩個變數即可完成。 程式碼如下: #include <stdio.h > #include  < stdlib.h > int main() {     int x = 10;     int y = 20;     printf ("origin: x=%d, y=%d\n", x, y);     x = x ^ y;     y = x ^ y;     x = x ^ y;     printf ("swap:   x=%d, y=%d\n", x, y);     return 0; } https://en.wikipedia.org/wiki/XOR_swap_algorithm 延伸連結 (原創) 如何交換兩個變數,而不動用第三個變數? (C/C++) (C#) - 真 OO无双 - 博客园 達可鴨的池塘: XOR奇文共賞─變數直接互換、無線網路編碼