不借助第三個變數交換兩個數值型別變數的值

2021-08-13 20:42:40 字數 762 閱讀 6295

最簡單的方法是用乙個臨時變數

var a = 10, b = 20;

var temp = a;

a = b;

b = temp;

讓其中乙個變數變成與a和b都有關係的值

a = a + b;

b = a - b;

a = a - b;

或者

a = a - b;

b = a + b;

a = b - a;

利用

位運算

a ^= b;

b ^= a;

a ^= b;

c++甚至可以a^=b^=a^=b來完成任務,但是js不可以,不過可以這樣

a = (b^=a^=b)^a;
把a先變成乙個物件

a = ;

b = a.b;

a = a.a;

把a先換成乙個陣列

a = [a, b];

b = a[0];

a = a[1];

根據運算子優先順序,先執行b=a,然後一步陣列索引讓a得到b的值

a = [b, b = a][0];
es6的解構賦值語法

[a,b] = [b, a];

不借助第三個變數交換兩個變數的值

通常我們的做法是 尤其是在學習階段 定義乙個新的變數,借助它完成交換。如下 int a,b a 10 b 15 int t t a a b b t 這種演算法易於理解,特別適合幫助初學者了解電腦程式的特點,是賦值語句的經典應用。在實際軟體開發當中,此演算法簡單明瞭,不會產生歧義,便於程式設計師之間的...

JAVA不借助第三個變數實現兩個變數交換的思考

package mypackage public class demo 方法1 public void xchan01 int a,int b 方法2 public void xchan02 int a,int b 方法3 兩數交換不一定需要第三個元素 演算法問題 巧妙交換,提出的缺點會溢位經測驗是...

實現兩個值的交換(不借助第三個變數)

今天總結兩個不借助第三個變數實現兩個值的交換的方法 int main int main 今天主要聊聊第乙個方法,因為可讀性較強,並且聽一些老師說,這個方法也被很多網際網路公司作為面試題,但其實這個方法是有bug的,隱藏的很深,我們來分析分析。include void swap 1 int a,int...