定义:
sort函数用于C++中,对给定区间所有元素进行排序,默认为升序,也可进行降序排序。sort函数进行排序的时间复杂度为nlog2n,比冒泡之类的排序算法效率要高,sort函数包含在头文件为#include
语法:
sort(start,end,cmp)
(1)start表示要排序数组的起始地址;
(2)end表示数组结束地址的下一位;
(3)cmp用于规定排序的方法,可不填,默认升序。
时间复杂度:
时间复杂度为nlog2(n),执行效率较高。
功能:
sort函数用于C++中,对给定区间所有元素进行排序,默认为升序,也可进行降序排序。
一般是直接对数组进行排序,例如对数组a[10]排序,sort(a,a+10)。而sort函数的强大之处在可与cmp函数结合使用,即排序方法的选择。
sort类函数总结:
函数名 | 功能描述 |
sort | 对给定区间所有元素进行排序 |
stable_sort | 对给定区间所有元素进行稳定排序 |
partial_sort | 对给定区间所有元素部分排序 |
partial_sort_copy | 对给定区间复制并排序 |
nth_element | 找出给定区间的某个位置对应的元素 |
is_sorted | 判断一个区间是否已经排好序 |
partition | 使得符合某个条件的元素放在前面 |
stable_partition | 相对稳定的使得符合某个条件的元素放在前面 |
常用的cmp函数:
(1)对一组数据排序,使得数据从大到小
我们知道sort函数默认是从小到大排序的,所以我们需要定义一个cmp函数。
模板:
bool cmp(int a , int b)
{
return a>b;
}
例子:对n组数据从大到小进行排列
#includeusing namespace std; bool cmp(int a,int b) { return a>b; } int main() { int n; cin>>n; int a[n]; for(int i=0;i ) { cin>>a[i]; } sort(a,a+n,cmp); for(int i=0;i ) { cout<" "; } }
(2)给出几组数据,使得排序得到一个最小(最大)的数字(拼数)
模板:
bool cmp(string a,string b)
{
return a+bb+a; //从大到小排列
}
例子:对n做数据进行排列,使得组成的数据最小
#includeusing namespace std; bool cmp(string a,string b) { return a+ba; } int main() { int n; cin>>n; string a[20]; for(int i=0;i ) cin>>a[i]; sort(a,a+n,cmp); for(int i=0;i ) cout<<a[i]; }
例题:
https://ac.nowcoder.com/acm/problem/16783