• 数据结构与算法(C++)之swap交换


    swap交换:swap是几乎所有的排序的最基础部分,代码如下:

    #include <iostream>

    using namespace std;

    int main()
    {
    int a,b,tmp;
    a=1;
    b=10;
    cout <<"a="<< a<<",b="<<b<< endl;
    tmp=a;
    a=b;
    b=tmp;
    cout <<"a="<<a<<",b="<<b<< endl;
    return 0;
    }

    为了将其做成函数进行调用,进行了一个失败的案例:

    #include <iostream>
    //失败的例子
    using namespace std;
    //定义交换函数
    void swap(int x,int y);

    int main()
    {
    int a,b;
    a=1;
    b=10;
    cout <<"a="<< a<<",b="<<b<< endl;
    //调用交换函数
    //a和b是如何传递的
    //c++按值传递:把a拷贝一个传递进去,b相同
    swap(a,b);//传递参数的方式
    cout <<"a="<< a<<",b="<<b<< endl;
    return 0;

    }
    //失败案例
    //交换函数内容
    void swap(int x,int y){
    int tmp;
    tmp=x;
    x=y;
    y=tmp;
    }

    学习视频得到了理解,后面进行尝试了几个成功的案例:

    #include <iostream>
    using namespace std;
    void swap(int *px,int *py);

    int main(){

    int a,b;
    a=1;
    b=10;
    cout<<"传递指针的方法:"<<endl;
    cout <<"a="<< a<<",b="<<b<< endl;
    //拷贝指针(地址)
    swap(&a,&b);

    cout <<"a="<< a<<",b="<<b<< endl;
    return 0;

    }
    void swap(int *px,int *py){

    int tmp;

    tmp=*px;
    *px=*py;
    *py=tmp;

    }

    #include <iostream>
    //c语言中最常用的就是宏定义
    #define SWAP(x,y,t) ((t)=(x),(x)=(y),(y)=(t))
    using namespace std;
    int main()
    {
    int a,b,tmp;
    a=1;
    b=10;
    cout<<"使用宏定义函数:"<<endl;
    cout <<"a="<< a<<",b="<<b<< endl;
    SWAP(a,b,tmp);
    cout <<"a="<< a<<",b="<<b<< endl;
    return 0;
    }

    #include <iostream>

    using namespace std;

    void swap(int &x,int &y);

    int main()
    {
    int a,b;
    a=1;
    b=10;
    cout<<"传引用:"<<endl;
    cout <<"a="<< a<<",b="<<b<< endl;

    swap(a,b);
    cout <<"a="<< a<<",b="<<b<< endl;
    return 0;
    }
    //引用就是别名
    void swap(int &x,int &y)
    {
    int tmp;
    tmp=x;
    x=y;
    y=tmp;
    }

    #include <iostream>
    //使用自带的模板进行交换
    using namespace std;
    int main()
    {
    int a,b;
    a=1;
    b=10;
    cout <<"使用std::swap函数"<<endl;
    cout <<"a="<< a<<",b="<<b<< endl;
    std::swap(a,b);
    cout <<"a="<< a<<",b="<<b<< endl;
    return 0;
    }

    就这一个小小的swap就这么多的写法,当然最好用的还是调用C++自带的函数库啦。

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    no one and you
  • 相关阅读:
    数据库水平切分(拆库拆表)的实现原理解析(转)
    json序列化 & 反序列化
    数据库工作原理
    【原创】python多线程测试接口性能
    XML解析(DOM、ElementTree)及转换为JSON
    nginx+supervisor+gunicorn+flask
    3、爬取干货集中营的福利图片
    Python多环境扩展管理
    九、frp对外提供简单的文件访问服务
    八、frps服务端与nginx可共用80端口
  • 原文地址:https://www.cnblogs.com/wslQAQ/p/12320736.html
Copyright © 2020-2023  润新知