C++中的sort()函數:
sort()函數在頭文件algorithm中,也可使用萬能頭文件bits/stdc++.h
sort()可對普通數組和vector動態數組排序
sort()對普通數組排序:
int arr[10];//double, string等等都可以
…
sort(arr,arr+10);//從小到大排序
arr: 數組地址 arr+10: 數組尾部
注意:數組長度是10,所以要+10,不是9
同理,從第二個元素排到第五個元素就是sort(arr+1,arr+5), 2-5 1-5 5-1=4
9 8 7 6 5 4 3 2 1 0 ——> 9 5 6 7 8 4 3 2 1 0 自己慢慢體會
sort()對vector動態數組排序:
vector<int>v;// double, string等等都可以
…
sort(v.begin(),v.end());//從小到大排序
C++中使用sort()自定義cmp函數:
sort()排序默認是從小到大的,如果想從大到小排怎麼辦呢?
或者想給結構體數組排序,按照幾個不同優先級的關鍵字進行排序呢?
int cmp(int a,int b)
{
return a>b;//從大到小排序,a<b就是從小到大排序,注意是大於小於,不帶等於
}
int main()
{
int arr[10];//double, string等等都可以
…
sort(arr,arr+10,cmp);//從小到大排序
}
第二種方法:sort(arr,arr+10,greater<int>());//從大到小排序
對結構體排序:
struct s{
int id;
int score;
};
按score從大到小排序,score相同時按id從小到大排序
int cmp(s a,s b)
{
if(a.score==b.score)
{
return a.id<b.id;
}
return a.score>b.score;
}
int main()
{
s stu[10];
…
sort(stu,stu+10,cmp);
}
注意:對字符數組 char [ ] 排序要用return strcmp(s1,s2)<0或>0
典型例題:
20200217訓練賽題目 L1 – 2 部分排序,L2 – 2 模擬EXCEL排序