定义:
sort函数用于C++中,对给定区间所有元素进行排序,默认为升序,也可进行降序排序。sort函数进行排序的时间复杂度为nlog2n,比冒泡之类的排序算法效率要高,sort函数包含在头文件为#include<algorithm>的c++标准库中。
语法:
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组数据从大到小进行排列
#include<bits/stdc++.h> using 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<n;i++) { cin>>a[i]; } sort(a,a+n,cmp); for(int i=0;i<n;i++) { cout<<a[i]<<" "; } }
(2)给出几组数据,使得排序得到一个最小(最大)的数字(拼数)
模板:
bool cmp(string a,string b) { return a+b<b+a; //从小到大排列 } bool cmp(string a,string b) { return a+b>b+a; //从大到小排列 }
例子:对n做数据进行排列,使得组成的数据最小
#include <bits/stdc++.h> using namespace std; bool cmp(string a,string b) { return a+b<b+a; } int main() { int n; cin>>n; string a[20]; for(int i=0;i<n;i++) cin>>a[i]; sort(a,a+n,cmp); for(int i=0;i<n;i++) cout<<a[i]; }