交换两个数的四种方法

1. 采用临时变量

1.1 形参变,实参未变

函数内部交换成功,函数外部变量未交换

具体实例:

void swap(int a, int b)
{
    int temp;//临时变量
    temp = a;
    a = b;
    b = a;
}
1.2 形参变,实参变

函数内部和外边变量都交换

具体实例:

     使用指针*:

void swap(int *a, int *b)
{
    int temp;//临时变量
    temp = *a;
    *a = *b;
    *b = temp;
}

    使用引用&:

void swap(int &a, int &b)
{
    int temp;//临时变量
    temp = a;
    a = b;
    b = a;
}



2.不采用临时变量

2.1 加减法

具体实例:

void swap(int *a, int *b)
{
    *a = *a + *b - *a;
    *b = *a + *b - *a;
}
2.2 异或法

数值在计算机中时二进制保存,例如1是01,2是10,对两个数进行按位异或操作,即可以交换值

具体实例:

void swap(int *a, int *b)
{
    *a = *a ^ *b;
    *b = *a ^ *b;
    *a = *a ^ *b; 
}



总结:四种方法中,1.2的方法最常用。2.2方法另辟蹊径,但是效率是四种方法中最低的



你可能感兴趣的:(基础知识)