首先是使用 第三方变量交换两个变量的值;

 

 static void Main(string[] args)
        {
            int a = 3;
            int b = 5;
            JH(ref a, ref b);
            Console.WriteLine("a的值是" + a + "b的值是" + b);
            Console.ReadLine();
       
        }



//定义一个 交换的方法
  public static void JH(ref int a,ref int b) {
            int item;
            item = a;
            a = b;
            b = item;
        }

-------这里实现两个变量的交换,上面的算法最大的缺点就是需要借助一个临时变量。

这里我们可以用三种算法来实现:1)算术运算;2)位运算。 

 

1):算数运算

       简单的说就是加减 运算: 

    

 int a,b; 
     a=10;b=12; 

     a=b-a; //           a=2;b=12   a=2

     b=b-a; //           a=10;b=12  b=10

     a=b+a; //           a=12;b=10  a=12

 

2):位运算

 通过异或运算也能实现变量的交换,这也许是最为神奇的,请看以下代码: 
int a=10,b=12;                               //a=1010^b=1100; 
a=a^b;                                          //a=0110^b=1100; 
b=a^b;                                          //a=0110^b=1010; 
a=a^b;                                          //a=1100=12;b=1010; 
此算法能够实现是由异或运算的特点决定的,通过异或运算能够使数据中的某些位翻转,其他位不变。这就意味着任意一个数与任意一个给定的值连续异或两次,值不变。 
即:a^b^b=a。将a=a^b代入b=a^b则得b=a^b^b=a;同理可以得到a=b^a^a=b;轻松完成交换。 

posted on 2017-03-10 18:30  啷个哩个啷  阅读(368)  评论(0)    收藏  举报