sort简介
-
#include<algorithm>
-
使用的是快速排序
-
时间复杂度为O(nlogn)
sort使用(默认是从小到大)
1.sort(起始地址,结束地址的下一位,*比较函数);
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a[1000];
int n;
cin>>n;
for(int i=1;i<=n;++i)
cin>>a[i];
sort(a+1,a+n+1);
for(int i=1;i<=n;++i)
cout<<a[i]<<'\n';
return 0;
}
2.sort(起始地址(对迭代器而言begin()),结束地址的下一位,*比较函数)
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
vector<int>v={5,3,1,7,2};
sort(v.begin(),v.end());
for(int i=0;i<v.size();i++)
{
cout<<v[i]<<" ";
}
return 0;
}
自定义比较函数
sort函数的第三个参数,可以是函数,也可以是lambda表达式
#include<bits/stdc++.h>
using namespace std;
bool cmp(const int &u,const int &v)
{
return u>v;
}
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
vector<int>v={4,2,7,120,35};
sort(v.begin(),v.end(),cmp);
//lambda表达式
//sort(v.begin(),v.end(),[](const int &u,const int &v)
{
return u>v;
});
for(int i=0;i<v.size();i++)
{
cout<<v[i]<<" ";
}
return 0;
}
题解1:
#include <bits/stdc++.h>
using namespace std;
const int N = 5e5 +3;
int a[N];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
sort(a+1,a+1+n);
for(int i=1;i<=n;i++)
{
cout<<a[i]<<" ";
}
cout<<'\n';
for(int i=n;i>=1;i--)
{
cout<<a[i]<<" ";
}
return 0;
}
题解2:
#include <bits/stdc++.h>
using namespace std;
const int N = 5e5+3;
int a[N];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
sort(a+1,a+1+n);
for(int i=1;i<=n;i++)
{
cout<<a[i]<<" ";
}
cout<<'\n';
sort(a+1,a+1+n,[](const int &u,const int &v)
{
return u>v;
});
for(int i=1;i<=n;i++)
{
cout<<a[i]<<" ";
}
return 0;
}