两个整数交换的集中方法集锦
1 package q_2013_03_23; 2 3 public class SwapDemo { 4 5 public static void main(String[] args) { 6 7 // 两个数交换 8 swap5(3,5); 9 10 } 11 12 // 第三方临时变量-temp 13 public static void swap1(int a,int b){ 14 15 System.out.println("a="+a+":"+"b="+b); 16 int temp; 17 temp = a; 18 a = b; 19 b = temp; 20 System.out.println("a="+a+":"+"b="+b); 21 } 22 23 // 不用第三方临时变量-用加减-多行代码 24 public static void swap2(int a,int b){//a=3 b=5 25 System.out.println("a="+a+":"+"b="+b); 26 a = a + b;// a=a+b=3+5=8, b=b=5 27 b = a - b;// b=8-5=3 28 a = a - b;// a=8-3=5 29 System.out.println("a="+a+":"+"b="+b); 30 } 31 32 // 不用第三方临时变量-用异或-多行代码-效率高 33 public static void swap3(int a,int b){//a=3 b=5 a=00000011 b=00000101 34 System.out.println("a="+a+":"+"b="+b); 35 a = a ^ b;//a = 00000110,b=00000101 36 b = a ^ b;//b = 00000011=3, a = 00000110 37 a = a ^ b;//a = 00000101=5 38 System.out.println("a="+a+":"+"b="+b); 39 } 40 41 // 用一行代码实现交换,用加减 42 public static void swap4(int a,int b){ 43 System.out.println("a="+a+":"+"b="+b); 44 b=a+b-(a=b);//b=3-(a=2)=1 //用一行代码实现交换 45 //或者a=b+a-(b=a); 46 System.out.println("a="+a+":"+"b="+b); 47 } 48 49 // 用一行代码实现,异或 50 public static void swap5(int a,int b){//a=3,b=5 51 System.out.println("a="+a+":"+"b="+b); 52 a = a^b^(b=a);//a=5,b=3 53 System.out.println("a="+a+":"+"b="+b); 54 b = b^a^(a=b); 55 System.out.println("a="+a+":"+"b="+b); 56 } 57 58 }
一行代码实现交换:
1 public class OneLineSwap 2 { 3 public static void main(String[] args) 4 { 5 //一、用加减一行代码实现两个数的交换 6 int a = 3; 7 int b = 4; 8 System.out.println("交换前:"+"a = "+a+":"+"b = "+b); 9 a = a+b-(b=a); 10 //或b =a+b-(a=b); 11 //或b = a-b+(a=b); 12 System.out.println("交换后:"+"a = "+a+":"+"b = "+b); 13 System.out.println("=================="); 14 //二、用异或一行代码 15 int x = 5; 16 int y = 8; 17 System.out.println("交换前:"+"x = "+x+":"+"y = "+y); 18 x = x^y^(y=x); 19 //或y = x^y^(x=y); 20 System.out.println("交换后:"+"x = "+x+":"+"y = "+y); 21 } 22 23 }
by hacket

浙公网安备 33010602011771号