不使用第三个变量的交换两个数 (笔记)

[cpp]typedef int SWAP_TYPE; 

//交换两个数,不使用第三个变量 
void swap(int &a,int &b,SWAP_TYPE type) 

    switch(type) 
    { 
    case 1: 
        //利用加减法(缺点:a+b可能溢出) 
        a = a + b; 
        b = a - b; 
        a = a - b; 
        break; 
    case 2: 
        //利用一个数异或本身等于0和异或运算符合交换率 
        a = a ^ b; 
        b = a ^ b; 
        a = a ^ b; 
        break; 
    case 3: 
        //乘除 
        a = a * b;  
        b = a / b;  
        a = a / b; 
        break; 
    case 4: 
        //不常见方法1 
        a = a + b - (b = a); 
        break; 
    case 5: 
        //不常见方法2 
        b = a + (a = b)*0; 
        break; 
    default: 
        break; 
    }    
}[/cpp]

作者:JarvisChu
原文链接:不使用第三个变量的交换两个数 (笔记)
版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0

2 条评论

发表评论

取消回复