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)
方法五:template<class T>viod swap(T& x, T& b)
方法一和方法二是c语言中的方法,方法三、方法四和方法五是C++中的方法,C++也可以使用方法一和方法二,C++可以使用C中的方法,方法二和方法五分别是c语言和c++最常用的方法。C++使用传递引用(方法三)代替C语言中的传递指针(方法1)相当于是对C语言的一种简化。

#include<iostream>
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<class T> void swap5(T& a,T& b); //方法五,模板参数交换函数,是C++中使用最多的交换函数。

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

//SWAP2(a,b,temp);

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

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

swap5(a,b);
        cout <<"a = "<<a<<",b = "<<b<<endl;
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<class T> 
void swap5(T& a,T& b)
{
int temp;
temp = a;
a= b;
b = temp;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值