sort函数的用法

sort函数的用法

sort函数一般有两个或三个参数,第一个是数组名,第二个是数组名+元素个数,第三个是排列方式(若用从小到大的默认排列方式,则可以省略),下来用例子来说明。

常用排序法

题目描述:为了快速地把修罗王和邪狼从混乱的队伍中找出来,典狱长准备对排队的囚犯进行从小到大的按编号排序,但是他不知道用哪一种排序方法最合适,因此他准备请教前来协助的高级魔法师张琪曼和楚继光。
输入:共两行,第一行为一个数N(N≤100000),即排队的总人数,第二行为N个数,即每个人的编号,每个编号均不超过int类型的最大值。
输出:输出排好序的数列,每个数以空格间隙。行尾有空格
样例输入:
10
2 1 76 11 4 765 32 56 3 23
样例输出:
1 2 3 4 11 23 32 56 76 765
典型的sort函数裸题,这个题不需要第三个参数。

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        int n,i,a[100001];
        scanf("%d",&n);
        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
        }
        sort(a,a+n);//默认排序
        for(i=0;i<n;i++)
        {
            printf("%d ",a[i]);
        }
        return 0;
    }

统计分数

这次桐桐要统计的是全市七年级学生的期末成绩,一共统计五个科目:语文、数学、英语、政治和历史。仍然是计算所有学生的五科总成绩,并按照由高到低的顺序将总成绩输出,但是全市七年级学生的总数可能达到20000。你能够编写程序帮助桐桐完成任务吗?
输入:
第1行:一个数n(1≤n≤20000),表示全市七年级学生的总数;
第2行至第n+1行:第i行表示第i-1的学生的成绩(范围在0~100之间的整数),每行有5个数,分别表示当前学生的五科成绩,相邻数之间用空格隔开。

输出:
只有1行,按照由高到低的顺序输出总成绩,相邻数间用空格隔开,末尾有空格。
样例输入
5
89 76 80 67 90
70 80 78 95 92
65 77 88 98 100
82 68 99 87 69
100 92 87 79 90
样例输出
448 428 415 405 402
需要注意的是用sort函数时,数组最好从0开始定义,从1开始也可以,但是数组里面的参数要变。

    #include <iostream>
    #include <bits/stdc++.h>
    using namespace std;
    bool compare(int x,int y)
    {
        return x>y;//由大到小排序,可根据需求改变返回条件
    }
    int main()
    {
        int n,i,a[20001],b[20001],c[20001],d[20001],e[20001],f[20001];
        scanf("%d",&n);
        for(i=0;i<n;i++)
        {
            scanf("%d%d%d%d%d",&a[i],&b[i],&c[i],&d[i],&e[i]);//五科成绩
            f[i]=a[i]+b[i]+c[i]+d[i]+e[i];//总成绩
        }
        sort(f,f+n,compare);//不加入第三个参数即由小到大排序,如有其他需要,则需加入第三个参数
        for(i=0;i<n;i++)
        {
            if(i==0) printf("%d",f[i]);
            else printf(" %d",f[i]);
        }
        printf("\n");
        return 0;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值