zoukankan      html  css  js  c++  java
  • C++ sort()函数的用法

    C++sort()函数的用法

    C++sort()函数的用法

    近来看了c++标准库这本书,学到了很多,就把这其中的一点C++sort()函数的用法写下来和大家分享吧

    (一)为什么要用c++标准库里的排序函数

    Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的冒泡排序和选择排序所带来的执行效率不高的问题!因为它使用的排序方法是类似于快排的方法,时间复杂度为n*log2(n),执行效率较高!

    (二)c++标准库里的排序函数的使用方法

    ISort函数包含在头文件为#include<algorithm>的c++标准库中,调用标准库里的排序方法可以不必知道其内部是如何实现的,只要出现我们想要的结果即可!

    IISort函数有三个参数:

    (1)第一个是要排序的数组的起始地址。

    (2)第二个是结束的地址(最后一位要排序的地址)

    (3)第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是从小到大排序。

    Sort函数使用模板:

    Sort(start,end,排序方法)

    下面就具体使用sort()函数结合对数组里的十个数进行排序做一个说明!

    例一:sort函数没有第三个参数,实现的是从小到大

    #include<iostream>
    #include<algorithm>
    using namespace std;
    int main()
    {
     int a[10]={9,6,3,8,5,2,7,4,1,0};
     for(int i=0;i<10;i++)
     cout<<a[i]<<endl;
    sort(a,a+10);
     for(int i=0;i<10;i++)
     cout<<a[i]<<endl;
     return 0;
    }


    例二

    通过上面的例子,会产生疑问:要实现从大到小的排序肿么办?

     这就如前文所说需要在sort()函数里的第三个参数里做文章了,告诉程序我要从大到小排序!

    需要加入一个比较函数 complare(),此函数的实现过程是这样的

    bool complare(int a,int b)

    {

     return a>b;

    }

    这就是告诉程序要实现从大到小的排序的方法!

    #include<iostream>
    #include<algorithm>
    using namespace std;
    bool complare(int a,int b)
    {
     return a>b;
    }
    int main()
    {
     int a[10]={9,6,3,8,5,2,7,4,1,0};
     for(int i=0;i<10;i++)
     cout<<a[i]<<endl;
     sort(a,a+10,complare);//在这里就不需要对complare函数传入参数了,//这是规则
     for(int i=0;i<10;i++)
     cout<<a[i]<<endl;
     return 0;
    }


    例三:

    通过上面例一、二的方法虽然实现了从大到小和从大到小的排序,这样做还是有点麻烦,因为还需要自己编写告诉程序执行何种排序的原则的函数,c++标准库强大的功能完全可以解决这种麻烦。

    Sortt函数的第三个参数可以用这样的语句告诉程序你所采用的排序原则

    less<数据类型>()//从小到大排序

    greater<数据类型>()//从大到小排序

    结合本例子,这样的就可以完成你想要的任何一种排序原则了

    #include<iostream>
    #include<algorithm>
    using namespace std;
    int main()
    {
     int a[10]={9,6,3,8,5,2,7,4,1,0};
     for(int i=0;i<10;i++)
     cout<<a[i]<<endl;
    sort(a,a+10,less<int>());
     for(int i=0;i<10;i++)
     cout<<a[i]<<endl;
     return 0;
    }
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int main()
    {
     int a[10]={9,6,3,8,5,2,7,4,1,0};
     for(int i=0;i<10;i++)
     cout<<a[i]<<endl;
     sort(a,a+10,greater<int>());
     for(int i=0;i<10;i++)
     cout<<a[i]<<endl;
     return 0;
    }


    例四:利用sort函数还可以实现对字符的排序,排序方法大同小异,下面就把程序范例展示一下

    #include<iostream>
    #include<algorithm>
    using namespace std;
    int main()
    {
     char a[11]="asdfghjklk";
     for(int i=0;i<10;i++)
     cout<<a[i]<<endl;
     sort(a,a+10,greater<char>());
     for(int i=0;i<10;i++)
     cout<<a[i]<<endl;
     return 0;
    }



  • 相关阅读:
    修复 Visual Studio Error “No exports were found that match the constraint”
    RabbitMQ Config
    Entity Framework Extended Library
    Navisworks API 简单二次开发 (自定义工具条)
    NavisWorks Api 简单使用与Gantt
    SQL SERVER 竖表变成横表
    SQL SERVER 多数据导入
    Devexpress GridControl.Export
    mongo DB for C#
    Devexress XPO xpPageSelector 使用
  • 原文地址:https://www.cnblogs.com/qie-wei/p/10160238.html
Copyright © 2011-2022 走看看