sort函数
sort
对给定区间进行排序,支持各种数据类型,迭代器,结构体,自定义排序规则stable_sort
对给定区间进行稳定排序,且可保证相等元素的原本相对次序在排序后保持不变partial_sort
对给定区间部分元素排序partial_sort_copy
对给定区间部分元素排序并复制partition
使得符合某个条件的元素放在前面stable_partition
相对稳定的使得符合某个条件的元素放在前面
sort函数使用
- 对int型排序,默认是升序
#include <iostream> #include <algorithm> #include <stdio.h> #include <vector> using namespace std; int main(){ vector<int> a; int tmp; for (int i = 0;i < 3; ++i) { scanf("%d",&tmp); a.push_back(tmp); } sort(a.begin(),a.end()); for(int i = 0;i < a.size();++i) { cout << a[i] << " "; } return 0; }
- 对string型 按字典排序,默认是升序
#include <iostream> #include <algorithm> #include <stdio.h> #include <vector> using namespace std; int main(){ vector<string> s; string s1; for (int i = 0; i< 3; ++i) { cin>>s1; s.push_back(s1); } sort(s.begin(),s.end()); for(int i = 0;i < s.size();++i) { cout << s[i] << " "; } return 0; }
- 对int型指定排序规则
#include <iostream> #include <algorithm> #include <stdio.h> #include <vector> using namespace std; /*降序规则*/ bool cmp(int a, int b) { return a>b; } int main(){ vector<int> a; int tmp; for (int i = 0;i < 3; ++i) { scanf("%d",&tmp); a.push_back(tmp); } sort(a.begin(),a.end(),cmp); for(int i = 0;i < a.size();++i) { cout << a[i] << " "; } return 0; }
- 对结构体进行排序,并制定排序规则
#include <iostream> #include <algorithm> #include <stdio.h> #include <vector> using namespace std; struct Data { int a; int b; }; /*构造结构体排序规则*/ bool cmp(Data da1, Data da2) { if (da1.a == da2.a) return da1.b > da2.b; return da1.a > da2.a; } int main(){ vector<Data> stru; Data da1; for (int i = 0;i < 3; ++i) { scanf("%d %d",&da1.a, &da1.b); stru.push_back(da1); } sort(stru.begin(),stru.end(),cmp); for (int i =0; i < stru.size(); ++i) cout << stru[i].a << " " << stru[i].b << endl; return 0; }