函数名 | 功能描述 |
---|---|
sort | 对给定区间所有元素进行排序 |
用法:sort(begin,end),表示一个范围
头文件:#include <algorithm>
1,用sort函数对一维数组元素升序排列
#include<iostream>
#include<algorithm> //sort函数头文件
using namespace std;
int main()
{
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
sort(a,a+n);//sort函数进行升序排列
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
}
2,用sort函数对一维数组元素降序排列
上面例子中的sort(a,a+n),默认对数组a中的元素进行升序排列。
若想实现对数组a中的元素进行降序排列,需要自己编写一个比较函数来实现,
接着调用三个参数sort:sort(begin,end,compare)就成了。
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a,int b) //自定义一个比较函数
{
return a>b; //降序排列,如果改为return a<b,则为升序
}
int main()
{
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
sort(a,a+n,cmp);//sort函数进行降序排列
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
}
3,sort对二维进行排序
这个时候需要借助c++里面的结构体struct。
#include<iostream>
#include<algorithm>
using namespace std;
struct act{ //定义一个结构体
int begin;
int end;
};
bool cmp(act a,act b)
{
return a.end>b.end; //降序
}
int main()
{
int n;
cin>>n;
act a[n];
for(int i=0;i<n;i++)
{
cin>>a[i].begin>>a[i].end;
}
sort(a,a+n,cmp);//sort函数进行排序
for(int i=0;i<n;i++)
{
cout<<a[i].begin<<" "<<a[i].end<<endl;
}
}
输入:
输出:(按第二列,进行降序排列)