一.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;
}