A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hacket 高级黑马   /  2013-3-24 00:42  /  2484 人查看  /  3 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 hacket 于 2013-3-24 10:05 编辑
  1. package q_2013_03_23;

  2. public class SwapDemo {

  3.         public static void main(String[] args) {
  4.                
  5. //                两个数交换
  6.                 swap5(3,5);
  7.                
  8.         }

  9. // 第三方临时变量-temp
  10.         public static void swap1(int a,int b){
  11.                
  12.                 System.out.println("a="+a+":"+"b="+b);
  13.                 int temp;
  14.                 temp = a;
  15.                 a = b;
  16.                 b = temp;
  17.                 System.out.println("a="+a+":"+"b="+b);
  18.         }
  19. // 不用第三方临时变量-用加减-多行代码
  20.         public static void swap2(int a,int b){//a=3 b=5
  21.                 System.out.println("a="+a+":"+"b="+b);
  22.                 a = a + b;// a=a+b=3+5=8, b=b=5
  23.                 b = a - b;// b=8-5=3
  24.                 a = a - b;// a=8-3=5
  25.                 System.out.println("a="+a+":"+"b="+b);
  26.         }
  27. //不用第三方临时变量-异或-效率高
  28.         public static void swap3(int a,int b){//a=3 b=5 a=00000011 b=00000101
  29.                 System.out.println("a="+a+":"+"b="+b);
  30.                 a = a ^ b;//a = 00000110,b=00000101
  31.                 b = a ^ b;//b = 00000011=3, a = 00000110   
  32.                 a = a ^ b;//a = 00000101=5
  33.                 System.out.println("a="+a+":"+"b="+b);
  34.         }
  35. //用一行代码实现交换,用加减
  36.         public static void swap4(int a,int b){
  37.                 System.out.println("a="+a+":"+"b="+b);
  38.                 b=a+b-(a=b);//b=3-(a=2)=1 //用一行代码实现交换
  39.                 //或者a=b+a-(b=a);
  40.                 System.out.println("a="+a+":"+"b="+b);
  41.         }
  42. //用一行代码实现,异或
  43.         public static void swap5(int a,int b){//a=3,b=5
  44.                 System.out.println("a="+a+":"+"b="+b);
  45.                 a = a^b^(b=a);//a=5,b=3
  46.                 System.out.println("a="+a+":"+"b="+b);
  47.                 b = b^a^(a=b);
  48.                 System.out.println("a="+a+":"+"b="+b);
  49.         }
  50.         
  51.         
  52.         
  53. }
复制代码

本人总结的关于两个数交换的几种方法,要是还有其他好的方法,可以分享一下。



3 个回复

倒序浏览
相当好!!!!!!!!
回复 使用道具 举报
给力!!!
回复 使用道具 举报
竟然看懂了,不过让我自己来做的话估计只能想出其中几种,想不全
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马