sort函数 订阅
sort函数用于C++中,对给定区间所有元素进行排序,默认为升序,也可进行降序排序。sort函数进行排序的时间复杂度为n*log2n,比冒泡之类的排序算法效率要高,sort函数包含在头文件为#include的c++标准库中。 [1] 展开全文
sort函数用于C++中,对给定区间所有元素进行排序,默认为升序,也可进行降序排序。sort函数进行排序的时间复杂度为n*log2n,比冒泡之类的排序算法效率要高,sort函数包含在头文件为#include的c++标准库中。 [1]
信息
外文名
sort Function
头文件
#include
所属范畴
C++
用    途
对给定区间所有元素进行排序
中文名
sort函数
功    能
升序、降序
sort函数sort函数概述
Sort(start,end,cmp)(1)start表示要排序数组的起始地址;(2)end表示数组结束地址的下一位;(3)cmp用于规定排序的方法,可不填,默认升序。sort函数用于C++中,对给定区间所有元素进行排序,默认为升序,也可进行降序排序。一般是直接对数组进行排序,例如对数组a[10]排序,sort(a,a+10)。而sort函数的强大之处在可与cmp函数结合使用,即排序方法的选择。 [2]  为什么要用c++标准库里的排序函数?sort()函数是c++一种排序方法之一,相较冒泡排序和选择排序所带来的执行效率不高的问题,sort()函数使用的排序方法是类似于快速排序的方法,时间复杂度为n*log2(n),执行效率较高。 [3]  sort函数见下表: [4] 
收起全文
精华内容
下载资源
问答
  • sort函数

    千次阅读 多人点赞 2019-09-13 23:20:35
    3、sort函数有三个参数: (1)要排序数组的起始地址 (2)要排序数组的最后一个数据元素的下一个地址 (3)排序方法,如果没有排序方法的话,默认从小到大排序 二、实例 1、sort函数实现数的排序 #...

    一、简介

    1、头文件:#include<algorithm>

    2、时间复杂度:类似于快排,为nlog(2)n,效率较高

    3、sort函数有三个参数:

        (1)要排序数组的起始地址

        (2)要排序数组的最后一个数据元素的下一个地址

        (3)排序方法,如果没有排序方法的话,默认从小到大排序

    二、实例

    1、sort函数实现数的排序

    #include<cstdio>
    #include<iostream>
    #include<cstdlib>
    #include<algorithm>
    using namespace std;
    bool cmp(int a,int b)///实现从大到小排序的比较函数
    {
        return a>b;
    }
    
    int main()
    {
        int i,j;
        int arr[10]={1,33,56,74,34,34,555,43,43,343};
        sort(arr,arr+10,cmp);
        for(i=0;i<10;i++)
            cout<<arr[i]<<" "<<endl;
        return 0;
    }
    

    2、sort函数实现字符串的排序(根据长度,字母顺序两种情况)

     (1)sort函数对string内的字符进行排序(string为字符串类型数据)

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    bool cmp(char a,char b)///比较函数
    {
        return a>b;
    }
    int main()
    {
        string s;
        cin>>s;
        sort(s.begin(),s.end());///从小到大
        cout<<s<<endl;
        sort(s.begin(),s.end(),cmp);///从大到小
        cout<<s<<endl;
        cout<<s.length()<<endl;///字符串长度函数
    }
    

    (2)sort对一维字符数组内的字符进行排序

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    bool cmp(char a,char b)///比较函数
    {
        return a>b;
    }
    int main()
    {
        char a[100];
        scanf("%s",a);
        sort(a,a+strlen(a));///从小到大
        cout<<a<<endl;
        sort(a,a+strlen(a),cmp);///从大到小
        cout<<a<<endl;
        cout<<strlen(a)<<endl;///输出字符数组a的长度
    
    }
    

     (3)sort对string类型的数组按照字典序排序

    #include<cstdio>
    #include<iostream>
    #include<cstdlib>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    bool cmp(string a,string b)///按照字典序从大到小排序
    {
        return a>b;
    }
    int main()
    {
        int i,j;
        string  s[12]=
        {
            "January",
            "February",
            "March",
            "April",
            "May",
            "June",
            "July",
            "August",
            "September",
            "October",
            "November",
            "December"
        };
        sort(s,s+12);///字符串默认按照字典序从小到大排序,数默认按照大小从小到大排序
      for(i=0;i<12;i++)
            cout<<s[i]<<endl;
    
            cout<<endl;
        sort(s,s+12,cmp);///按照字典序从大到小排序
        for(i=0;i<12;i++)
            cout<<s[i]<<endl;
      return 0;
    }
    

    (4)sort对char类型的二维数组进行字典序排序

       错误,不能这样做。同样也不能进行根据字符串长度的排序

       解决方法有:1、使用qsort  2、改用string

    (5)sort对string类型的数组根据长度进行排序

    #include<cstdio>
    #include<iostream>
    #include<cstdlib>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    bool cmp1(string a,string b)///按照长度从小到大排序
    {
        return a.length()<b.length();
    }
    bool cmp2(string a,string b)///按照长度从大到小排序
    {
        return a.length()>b.length();
    }
    int main()
    {
        int i,j;
        string  s[12]=
        {
            "January",
            "February",
            "March",
            "April",
            "May",
            "June",
            "July",
            "August",
            "September",
            "October",
            "November",
            "December"
        };
        sort(s,s+12,cmp1);///按照长度从小到大排序
      for(i=0;i<12;i++)
            cout<<s[i]<<endl;
    
            cout<<endl;
        sort(s,s+12,cmp2);///按照长度从大到小排序
        for(i=0;i<12;i++)
            cout<<s[i]<<endl;
      return 0;
    }
    

    6、对结构体数组进行排序(根据结构体中的某元素)

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    const int n=3;
    struct Student
    {
            char name[20];///姓名
            char id[20]; ///学号
            int score;  ///成绩
            int r;          ///排名
    }stu[100010];
    /*
    (1)如果两个学生的分数不同,则分数高的排在前面
    (2)否则,将姓名字典序小的排在前面
    */
    bool cmp(Student a,Student b)
    {
        if(a.score!=b.score) return a.score>b.score;
        else return strcmp(a.name,b.name)<0;
    }
    
    /*
    排名的实现,一般规则为:分数不同,排名不同,分数相同排名相同但占用同一个排位
    例如:分数为90,88,88,88,86;排名为1,2,2,2,5
    */
    void Rank()
    {
        int i,j;
        stu[0].r=1;
        for(i=1;i<n;i++)
        {
            if(stu[i].score==stu[i-1].score) stu[i].r=stu[i-1].r;
            else stu[i].r=i+1;
        }
    }
    int main()
    {
        int i,j;
        stu[0]={"guo","001",82,3};///这样赋值不对,算了,以后再改吧
        stu[1]={"zhang","002",82,3};
        stu[2]={"wu","003",99,2};
        sort(stu,stu+n,cmp);
        for(i=0;i<n;i++)
            cout<<stu[i]<<endl;
    }
    

     

    展开全文
  • Sort函数

    千次阅读 2018-08-07 20:49:19
    sort函数的用法(C++排序库函数的调用) 对数组进行排序,在c++中有库函数帮我们实现,这们就不需要我们自己来编程进行排序了。 (一)为什么要用c++标准库里的排序函数 Sort()函数是c++一种排序方法之一,学会了...

    *Sort *函数
    用途:对给定区间所有元素进行排序
    头文件**#include<algorithm>**
    这里写图片描述

    sort函数的用法(C++排序库函数的调用)
    对数组进行排序,在c++中有库函数帮我们实现,这们就不需要我们自己来编程进行排序了。
    (一)为什么要用c++标准库里的排序函数
    Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的
    冒泡排序和选择排序所带来的执行效率不高的问题!因为它使用的排序方法是类似于
    快排的方法,时间复杂度为n*log2(n),执行效率较高!
    (二)c++标准库里的排序函数的使用方法
    I)Sort函数包含在头文件为#include<algorithm>的c++标准库中,调用标准库里的排序
    方法可以不必知道其内部是如何实现的,只要出现我们想要的结果即可!
    II)Sort函数有三个参数: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()函数里的第三个参数里做文章了,告诉程序我要从大到小排序!
    需要加入一个比较函数compare(),此函数的实现过程是这样的
    
    bool compare(int a,int b)
    {
    return a>b;
    }
    
    这就是告诉程序要实现从大到小的排序的方法!
    #include<iostream>
    #include<algorithm>
    using namespace std;
    bool compare(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,compare);//在这里就不需要对compare函数传入参数了,这是规则
            for(int i=0;i<10;i++)
                 cout<<a[i]<<endl;
            return 0;
    }
    假设自己定义了一个结构体node
    struct node
    {
        int a;
        int b;
        double c;
    }
    有一个node类型的数组node arr[100],想对它进行排序:先按a值升序排列,如果a值相同,再按b值降序排列,如果b还相同,就按c降序排列。就可以写这样一个比较函数:
    以下是代码片段:
    bool cmp(node x,node y)
    {
          if(x.a!=y.a) return x.a<y.a;
          if(x.b!=y.b) return x.b>y.b;
           return x.c>y.c;
    }
    展开全文
  • sort 函数

    2016-04-05 23:29:10
    sort函数头文件是#include<algorithm>#include #include using namespace std; bool comp( const int a,const int b) { return a>b; } int main() { int a[5] = {1,2,4,3,5}; sort(a,a +

    sort函数头文件是#include<algorithm>

    #include<iostream>
    #include<algorithm>
    using namespace std;
    bool comp( const int a,const int b)
    {
        return a>b;
    }
    int main()
    {
        int a[5] = {1,2,4,3,5};
        sort(a,a + 5);//升序
        for(int i = 0;i < 5; i++)
            cout<<" "<<a[i];
        cout<<endl;
        sort(a,a + 5,comp);//降序
        for(int i = 0;i < 5; i++)
            cout<<" "<<a[i];
        cout<<endl;
        return 0;
    }

    sort函数本身按升序排列。当然可以自己定义一个按降序。如代码。
    这个函数可以传两个参数或三个参数。第一个参数是要排序的区间首地址,第二个参数是区间尾地址的下一地址。也就是说,排序的区间是[a,b)。简单来说,有一个数组int a[100],要对从a[0]到a[99]的元素进行排序,只要写sort(a,a+100)就行了,默认的排序方式是升序。如需要对数组t的第0到len-1的元素排序,就写sort(t,t+len);对向量v排序也差不多,sort(v.begin(),v.end());排序的数据类型不局限于整数,只要是定义了小于运算的类型都可以,比如字符串类string。
    如果是没有定义小于运算的数据类型,或者想改变排序的顺序,就要用到第三参数——比较函数。比较函数是一个自己定义的函数,返回值是bool型,它规定了什么样的关系才是“小于”。想把刚才的整数数组按降序排列,可以先定义一个比较函数cmp:

    展开全文
  • sort函数用法

    万次阅读 多人点赞 2018-04-10 09:30:54
    sort函数是一个非常强大的排序函数用法如下://使用sort函数进行升序排序#include &lt;stdio.h&gt;#include &lt;algorithm&gt;//sort函数所在的函数库using namespace std;//sort所在的标准命名空间...

    sort函数是一个非常强大的排序函数

    用法如下:

    //使用sort函数进行升序排序
    #include <stdio.h>
    #include <algorithm>//sort函数所在的函数库
    using namespace std;//sort所在的标准命名空间
    int main()
    {
    int n;
    int i;
    int buffer[100];
    while(~scanf("%d",&n))
    {
    for (i=0;i<n;i++)
    scanf("%d",&buffer[i]);
    sort(buffer,buffer+n);//快速排序升序方式
    for (i=0;i<n;i++)
    printf("%d ",buffer[i]);
    printf("\n");
    }

    }


    //使用sort函数的重载方式进行降序排序
    #include <stdio.h>
    #include <algorithm>
    using namespace std;

    bool cmp(int x,int y)//重新定义排序方式,记住
    {
    return x>y;
    }

    void main()
    {
    int n;
    int i;
    int buffer[100];
    while (~scanf("%d",&n))
    {
    for (i=0;i<n;i++)
    scanf("%d",&buffer[i]);
    sort(buffer,buffer+n,cmp);//sort函数的重载方式,cmp重新定义排序方式
    for (i=0;i<n;i++)
    printf("%d ",buffer[i]);
    printf("\n");
    }

    }


    //用sort函数实现结构体数据的升序排序

    //排序规则:

    //1.分数升序排序

    //2.分数相同,姓名升序排序

    //3.分数姓名都相同,年龄升序排序

    #include <stdio.h>
    #include <algorithm>
    using namespace std;


    struct E
    {
    char name[101];
    int age;
    int score;
    }buffer[100];


    bool cmp(E a,E b)
    {
    if (a.score!=b.score)
    return a.score<b.score;//分数不等,按分数递增排序
    int tmp = strcmp(a.name,b.name);//strcmp是字符串比较函数,相等返回0,大于返回1,小于返回-1
    if(tmp!=0)
    return tmp<0;//分数相等,逆转字符串比较值,实现按姓名递增排序
    else return a.age<b.age;//分数姓名都相等,按年龄递增排序
    }


    void main()
    {
    int n;
    int i;
    while (~scanf("%d",&n))
    {
    for (i=0;i<n;i++)
    scanf("%s %d %d",&buffer[i].name,&buffer[i].age,&buffer[i].score);
    sort(buffer,buffer+n,cmp);
    for (i=0;i<n;i++)
    printf("%s %d %d\n",buffer[i].name,buffer[i].age,buffer[i].score);
    printf("\n");
    }
    }


    这里有更详细的解释:

    sort函数详解




    展开全文
  • python中sort函数的使用

    万次阅读 多人点赞 2019-08-26 18:17:06
    转自...我们需要对List进行排序,Python提供了两个方法 对给定的List L进行排序, 方法1.用List的成员函数sort进行排序 方法2....sort函数定义:sort(cmp=None, key=None, rev...
  • sort函数详细讲解

    2020-08-19 12:07:33
    sort函数 简介 sort函数用于C++中,对给定区间所有元素进行排序,默认为升序,也可进行降序排序。sort函数进行排序的时间复杂度为n*log2n,比冒泡之类的排序算法效率要高,sort函数包含在头文件为#include < ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,903
精华内容 7,961
关键字:

sort函数