C++算法一:交换算法

本博客主要素材是观看算法视频的个人笔记,内容有些粗率,当作算学习的记录,后续会不断完善,欢迎交流。

最基础的算法:交换(swap)

常见的的交换算法主要有以下几种:

void swap(int x,int y) -这种方法不行
方法一:void swap(int *px,int *py)
方法二:#define swap(x,y,t)((t)=(x),(x)=(y),(y)=(t))
方法三:void swap(int &x,int &y)
方法四:std::swap( a, b)
方法五:templateviod swap(T& x, T& b)
方法一和方法二是c语言中的方法,方法三、方法四和方法五是C++中的方法,C++也可以使用方法一和方法二,C++可以使用C中的方法,方法二和方法五分别是c语言和c++最常用的方法。C++使用传递引用(方法三)代替C语言中的传递指针(方法1)相当于是对C语言的一种简化。

#include
using namespace std;
void swap1(int *px, int *py);//方法1,传指针,传指针就是传地址
#define SWAP2(x,y,t)((t)= (x),(x) = (y),(y) = (t))//方法2,是C语言中使用最多的方法,对各种类型的数据都可以进行交换,宏定义函数,宏函数一般为大写,小括号括起来
void swap3(int &px, int &py);//传引用的方法3,c++ 传引用,引用就是别名
//方法4,std c++标准库的swap()
template void swap5(T& a,T& b); //方法五,模板参数交换函数,是C++中使用最多的交换函数。

int main()
{
int a,b,temp;
a = 10;
b = 1;
cout <<"a = "< //拷贝的是地址
//swap1(&a,&b);

//SWAP2(a,b,temp);

//swap3(a,b); //传引用,引用就是别名

//std::swap(a,b);

swap5(a,b);
        cout <<"a = "< system("pause");
return 0;

}


void swap1(int *px, int *py)
{
//C++传引用代替传指针,是对指针的简化,传参数的时候传的是引用(别名),交换的时候不用指针
int temp;
temp = *px;
*px= *py;
*py = temp;
}
void swap3(int &px, int &py)
{
int temp;
temp = px;
px= py;
py = temp;
}
template 
void swap5(T& a,T& b)
{
int temp;
temp = a;
a= b;
b = temp;
}

你可能感兴趣的:(算法)