c++sort

一、c++sort 如何实现多关键字排序,以及如何升序排序降序排序 

#include <iostream>
#include <algorithm>

typedef struct STU
{
    int n;
    int c;
    int m;
    int e;
    int s;
}stu;

using namespace std;


bool cmp(stu a,stu b)
{
    //第一关键字相同,按第二关键字排序
    if(a.s==b.s)
    {
        //第二关键字相同,按第三关键字排序
        if(a.c == b.c)
        {
            return a.n<b.n;
        }
        else    return a.c > b.c;
    }
    //降序排序
    else    return a.s > b.s;
    //      return a.s < b.s;//升序排序
}

int main()
{
    stu a[310];
    int n;cin>>n;
    for(int i = 1; i <= n ; i ++ )
    {
        scanf("%d%d%d",&a[i].c,&a[i].m,&a[i].e);
        a[i].n = i;
        a[i].s = a[i].c + a[i].m + a[i].e;
    }
    sort(a+1,a+n+1,cmp);
    for(int i = 1; i <=5; i ++ )    printf("%d %d\n",a[i].n,a[i].s);
    
    return 0;
}

二、c++对vector进行排序

vector<int> a;

sort(a.begin(), a.begin() + n, cmp);

posted @ 2022-06-09 12:30  cxy8  阅读(49)  评论(0)    收藏  举报