交換兩個變量的值_不引入第三個變量


package test;

public class Test {
public static void main(String[] args) {
int a, b;
a = 10;
b = 12;
System.out.println(a + " " + b);

/*
* 借助第三方變量 這種算法易於理解,特別適合幫助初學者了解計算機程序的特點,是賦值語句的經典應用。
* 在實際軟件開發當中,此算法簡單明了,不會產生歧義,便於程序員之間的交流。 一般情況下碰到交換變量值的問題,都應采用此算法(標准算法)。
*/
int temp = a;
a = b;
b = temp;
System.out.println(a + " " + b);

/*
* 算術算法 它的原理是:把a、b看做數軸上的點,圍繞兩點間的距離來進行計算。 具體過程:
* 第一句“a=b-a”求出ab兩點的距離,並且將其保存在a中;
* 第二句“b=b-a”求出a到原點的距離(b到原點的距離與ab兩點距離之差),並且將其保存在b中;
* 第三句“a=b+a”求出b到原點的距離(a到原點距離與ab兩點距離之和),並且將其保存在a中。完成交換。
* 此算法與標准算法相比,多了三個計算的過程,但是沒有借助臨時變量。(算術算法)
*/
a = b - a;
b = b - a;
a = b + a;
System.out.println(a + " " + b);

/*
* 異或 相同為1 不同為0 此算法能夠實現是由異或運算的特點決定的,通過異或運算能夠使數據中的某些位翻轉,其他位不變。
* 這就意味着任意一個數與任意一個給定的值連續異或兩次,值不變。
* 即:a^b^b=a。將a=a^b代入b=a^b則得b=a^b^b=a;同理可以得到a=b^a^a=b;輕松完成交換。
*/
a = a ^ b;// 1010 ^ 1100 1001
b = a ^ b;// 1001 ^ 1100 1010
a = a ^ b;// 1001 ^ 1010 1100
System.out.println(a + " " + b);
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM