zoukankan      html  css  js  c++  java
  • swap() 函数实现的方法

    swap()函数总结:

    一、利用临时变量

      

      1.引用(交换任意类型)

    template <typename T>
    
    void swap(T& x,T& y)
    {
      T tmp;
      tmp = y;
      y = x;
      x = tmp;    
    }

      2.泛型指针()

    void swap(void* a,void* b )
    {
        int tmp;
        tmp = y;   
        y = x;
        x = tmp;
    }

    二、 不用临时变量交换

      1.数学运算

         1)乘

    void swap (int& x,int& y)
    {
        x=x*y;  
        y=x/y;  
        x=x/y; 
    }

        2)加

    void swap(int& x,int& y)
    {
        x=x+y;  
        y=x-y;  
        x=x-y; 
    }

      2.逻辑运算(相对其他的方法更高效)

    void swap(int& a ,int& b)
    {
    x=x^y;  
    y=x^y;  
    x=x^y; 
    }

    三、宏函数(注意不要有任何换行操作,或者使用换行符‘’)

      

    方法一:数学运算
    #define swap((a),(b))  { (a)  += (b);  (b) =((a)-(b)) ; (a) = ((a)-(b));}
    
    #define swap((a),(b)) { (a) *= (b); (b)=((a)/(b));
    (a) = ((a)/(b))}
    
    
    方法二:逻辑
    #define swap((a),(b)) { (a) ^= (b); (b) ^= (a);(a) ^= (b);}
  • 相关阅读:
    Java基础--day04
    Java基础--day03
    Java基础--day02
    高斯键盘设置指南
    博客园主题配置
    算法笔记--二分
    Test2反思
    树链剖分【模板】
    7.20关于莫队算法的一些初步理解
    分块(n根n复杂度)
  • 原文地址:https://www.cnblogs.com/Kernel001/p/7814278.html
Copyright © 2011-2022 走看看