a与b交换
一、利用中间参数
1、采用引用方式(引用表示别名)
#include<iostream>
using namespace std;
//引用
my_swap(int &x,int &y)
{
int tmp = x;
x = y ;
y = tmp;
}
int main()
{
int a=3;
int b=5;
cout<<"before swap "<<a<<" "<<b<<endl;
my_swap(a,b);
cout<<"after swap "<<a<<" "<<b<<endl;
return 0;
}
result: before swap : 3 5
after swap : 5 3
2、传地址
#include<iostream>
using namespace std;
my_swap1(int *x,int *y)
{
int tmp = *x;
*x = *y;
*y = tmp;
}
int main()
{
int a=3;
int b=5;
cout<<"before swap "<<a<<" "<<b<<endl;
my_swap1(&a,&b);
cout<<"after swap "<<a<<" "<<b<<endl;
return 0;
}
result: before swap : 3 5
after swap : 5 3
二、不用中间参数,实现交换
方法一
#include<iostream>
using namespace std;
//两个值传过来,作差法
my_swap2(int &x,int &y)
{
x=x+y;
y=x-y;
x=x-y;
}
int main()
{
int a=3;
int b=5;
cout<<"before swap "<<a<<" "<<b<<endl;
my_swap2(a,b);
cout<<"after swap "<<a<<" "<<b<<endl;
return 0;
result: before swap : 3 5
after swap : 5 3
方法二
#include<iostream>
using namespace std;
//把值传过来,通过异或实现交换
my_swap3(int &x,int &y)
{
x=x^y;
y=x^y;
x=x^y;
}
int main()
{
int a=3;
int b=5;
cout<<"before swap "<<a<<" "<<b<<endl;
my_swap3(a,b);
cout<<"after swap "<<a<<" "<<b<<endl;
return 0;
}
result: before swap : 3 5
after swap : 5 3