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.排序 - 藍橋云課 (lanqiao.cn)
題解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;
}