sort函式的簡單使用
阿新 • • 發佈:2020-12-30
技術標籤:c++
sort函式是C++中的排序函式
時間複雜度類似於快排,為nlog(2)n,效率較高
#include<algorithm> //所屬標頭檔案
sort(begin,end,cmp);
前兩個是引數是待排序的陣列首地址和尾地址
最後一個引數是compare,表示比較型別
cmp引數可省略,若省略,則預設從小到大排序
如要實現從大到小排序:
1.可呼叫函式greater()函式比較大小
程式碼如下:
#include<iostream>
#include<algorithm>
using namespace std;
int main ()
{
int a[50],n,i;
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
sort(a,a+n,greater<int>()); //如果排序其他型別可更改<>內的引數
for(i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
2.自定義一個比較大小的函式,將大的排前面
自定義函式:
bool compare (int a,int b)
{
return a>b; //若改為a<b則可以實現從小到大排序
}
完整程式碼:
#include<iostream>
#include<algorithm>
using namespace std;
bool compare(int a,int b)
{
return a>b;
}
int main()
{
int a[50],n,i;
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
sort(a,a+n, compare);
for(i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
sort函式實現對結構體的排序:
#include<iostream>
#include<algorithm>
using namespace std;
struct team
{
string name;
int score;
};
bool compare(team a,team b)
{
if(a.score==b.score)
return a.name<b.name;
else
return a.score>b.score;
}
int main()
{
int a[50],n,i;
team t[50];
cin>>n;
for(i=0; i<n; i++)
cin>>t[i].name>>t[i].score;
sort(t,t+n,compare);
for(i=0; i<n; i++)
cout<<t[i].name<<" "<<t[i].score<<endl;
return 0;
}
有n個隊伍參加比賽,按照分數高低輸出,若兩隊分數相同,則姓名字典序較小的優先輸出
特別強調一點:C++裡兩個字串位元組進行比較時,是把字串的每個字元從首端開始進行按照ASCII值的大小進行比較,如果相同,依次往下比較