C++中的sort()函数:
sort()函数在头文件algorithm中,也可使用万能头文件bits/stdc++.h
sort()可对普通数组和vector动态数组排序
sort()对普通数组排序:
int arr[10];//double, string等等都可以
…
sort(arr,arr+10);//从小到大排序
arr: 数组地址 arr+10: 数组尾部
注意:数组长度是10,所以要+10,不是9
同理,从第二个元素排到第五个元素就是sort(arr+1,arr+5), 2-5 1-5 5-1=4
9 8 7 6 5 4 3 2 1 0 ——> 9 5 6 7 8 4 3 2 1 0 自己慢慢体会
sort()对vector动态数组排序:
vector<int>v;// double, string等等都可以
…
sort(v.begin(),v.end());//从小到大排序
C++中使用sort()自定义cmp函数:
sort()排序默认是从小到大的,如果想从大到小排怎么办呢?
或者想给结构体数组排序,按照几个不同优先级的关键字进行排序呢?
int cmp(int a,int b)
{
return a>b;//从大到小排序,a<b就是从小到大排序,注意是大于小于,不带等于
}
int main()
{
int arr[10];//double, string等等都可以
…
sort(arr,arr+10,cmp);//从小到大排序
}
第二种方法:sort(arr,arr+10,greater<int>());//从大到小排序
对结构体排序:
struct s{
int id;
int score;
};
按score从大到小排序,score相同时按id从小到大排序
int cmp(s a,s b)
{
if(a.score==b.score)
{
return a.id<b.id;
}
return a.score>b.score;
}
int main()
{
s stu[10];
…
sort(stu,stu+10,cmp);
}
注意:对字符数组 char [ ] 排序要用return strcmp(s1,s2)<0或>0
典型例题:
20200217训练赛题目 L1 – 2 部分排序,L2 – 2 模拟EXCEL排序