zoukankan      html  css  js  c++  java
  • 不使用第三方变量交换两个变量的值

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

     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;轻松完成交换。 

  • 相关阅读:
    面试常见问题汇总
    java static变量及函数
    java自定义注解及其信息提取
    testNG 注释实例
    让我欲罢不能的node.js
    利用html 5 websocket做个山寨版web聊天室(手写C#服务器)
    html5 Web Workers
    html5 postMessage解决跨域、跨窗口消息传递
    C# socket编程实践——支持广播的简单socket服务器
    简单理解Socket
  • 原文地址:https://www.cnblogs.com/zhangyu0217----/p/6530734.html
Copyright © 2011-2022 走看看