蓝桥备战Day6:sort函数

文章介绍了C++中使用`sort`函数对数组进行从小到大和从大到小排序的方法,并通过示例展示了如何找出一组数据的最大值以及计算整数序列的最大跨度值。示例代码详细解释了排序和查找过程。
摘要由CSDN通过智能技术生成

一.sort函数定义

sort排序:通过交换,将数据实现从大到小或从小到大排序。

算法库:#include<algorithm>

二.sort函数实现:

实现从小到大排:sort(arr,arr+4);注意一定要往后多写一位,如为实现arr0到arr3的排序,要+4

即可实现从开始到第4个元素从小到大的排序。

实现arr[i]到arr[j-1]的排序:sort(arr+i,arr+j);其他元素将保留原样输出。

实现从大到小排:sort(arr,arr+i,greater<int>());int位置是数据类型,也可为double等

例题1:实现一组数据的排序

任意输入9个数,实现将其先从小到大排列,在从大到小排列,并将其结果换行输出。

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a[10];
for(int i=0;i<10;i++)
{
cin>>a[i];
}
sort(a,a+10);//实现数据从小到大排列
for(int i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
sort(a,a+11,greater<int>());//实现数据从大到小排列
for(int i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
return 0;
 } 

例题2:找出一组数据的最大值

【描述】

孙老师 讲授的《计算概论》这门课期中考试刚刚结束,他想知道考试中取得的最高分数。因为人数比较多,他觉得这件事情交给计算机来做比较方便。你能帮孙老师解决这个问题吗?

【输入】

输入为二行,第一行为整数n(1 <= n < 100),表示参加这次考试的人数.第二行是这n个学生的成绩

【输出】

输出一行,即最高的成绩

【样例输入】

5

85 78 90 99 60

【样例输出】

99

————————————————

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
    int n;
    cin>>n;
    int a[105];
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    sort(a,a+n,greater<int>());//下面使用数组即为排列好的数组
    for(int i=0;i<n;i++)
    {
        if(i==0)
        {
        cout<<a[0];
        }
    }
    return 0;
}

例题3:求整数序列的元素最大跨度值

小蒜蒜有一个长度为 nn 的非负整数序列,请计算序列的最大跨度值(最大跨度值 = 最大值减去最小值)。

【输入格式】

一共 2 行,第一行为序列的个数 n(1≤n≤1000)。

第二行为序列的 n 个不超过 1000 的非负整数,整数之间以一个空格分隔。

【输出格式】

输出一行,表示序列的最大跨度值。

输出时每行末尾的多余空格,不影响答案正确性

【样例输入】

6

3 0 8 7 5 9

【样例输出】

9

————————————————

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
    int n;
    cin>>n;
    double a[1002];
    double max,min;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    sort(a,a+n,greater<double>());
    for(int i=0;i<n;i++)
    {
       if(i==0)
       {
        max=a[0];
       }
        else if(i==(n-1))//注意此时的条件一定是(n-1)
        {
            min=a[n-1];
        }
    }
    cout<<max-min;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

派森学长

让我们一起学习python

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值