方法一:借助中間量交換
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)算法中可以用到。