交換兩個(gè)變量的值

方法一:借助中間量交換

int x = 10;?

int y = 20;?

int temp = x;?

x = y;?

y = temp;?

思想:假設(shè)x,y,temp為三個(gè)杯子,temp為空杯,交換x,y倆個(gè)杯子中的水,這么理解簡(jiǎn)單易懂。


方法二:利用位運(yùn)算的方式進(jìn)行數(shù)據(jù)的交換

intx =10,y=20;//定義兩個(gè)變量

x = x^y;?

y = x^y;//y=(x^y)^y

x = x^y;//x=(x^y)^x

System.out.println("x="+x+"y="+y);

原理:一個(gè)數(shù)異或同一個(gè)數(shù)兩次,結(jié)果還是那個(gè)數(shù),而且不會(huì)超出int范圍。


方法三:數(shù)值相加減交換?

int x =10,y=20;//定義兩個(gè)變量?

x = x + y;//x(30) = 10 + 20;?

y = x - y;//y(10) = x(30) - 20;?

x = x - y;//x(20) = x(30) - y(10)

System.out.println("x="+x+"y="+y);

原理:利用兩個(gè)數(shù)求和然后相減的方式進(jìn)行數(shù)據(jù)交換,弊端在于如果 x 和 y 的數(shù)值過(guò)大的話,超出 int 的值會(huì)損失精度。


以上的方法在數(shù)據(jù)結(jié)構(gòu)算法中可以用到。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容