sort快速排序
使用sort必须要有相应的头文件
#include<algorithm>
。
sort(begin,end)//直接用的话是按照升序排列,end指向最后一个元素的下一个位置
int a[n]
sort(a,a+n)
sort(a,a+n,cmp)
cmp为一个函数控制sort是升序还是降序排列
bool cmp(int a,int b)
{
return a < b 升序排列
//return a > b 降序排列
}
sort可完成对字符串、字符的排列
字符
//
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
string a = "ddccaa";
sort(a.begin(),a.end());
cout << a;
return 0;
}
输出结果
字符串
//
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
string a[5];
for(int i=0;i<5;i++)
cin>>a[i];
sort(a,a+5);
cout<<endl;
for(int i=0;i<5;i++)
cout<<a[i]<<endl;
return 0;
}
sort也可完成对结构体的排列(灵活运用)
题目:洛谷P1104 生日:https://www.luogu.com.cn/problem/P1104
//
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 105;
int n;
struct stu{
string name;
int year,month,day;
int shu;
}a[N];
bool cmp(stu a,stu b)
{
if(a.year!=b.year) return a.year < b.year;
if(a.month!=b.month) return a.month < b.month;
if(a.day!=b.day) return a.day < b.day;
return a.shu > b.shu;
}
int main()
{
cin >> n;
for(int i=0;i<n;i++)
{
cin >> a[i].name >> a[i].year >> a[i].month >> a[i].day;
a[i].shu=i;
}
sort(a,a+n,cmp);
for(int i=0;i<n;i++)
cout << a[i].name << endl;
return 0;
}