两个整数交换的集中方法集锦

 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 }

 

posted @ 2013-03-24 00:53  hacket520  阅读(137)  评论(0)    收藏  举报