<style>
.reveal .slides {
text-align: left;
font-size:32px;
}
</style>
## 530競技程式培力基地(六)
----
- sort
---
## STL sort
----
sort的基本用法
```cpp=
sort(num.begin(),num.end());
```
預設的排序是升序
通常用在vector 和 array
----
遇到array怎麼辦呢?
```cpp=
sort(arr,arr+n);
```
----
sort可以自訂範圍,你要自己注意陣列大小
```cpp=
sort(num.begin()+2,num.end()-1);
```
----
如果想要降序呢?
```cpp=
bool cmp(int a, int b) {
return a > b; // 降序排列,元素會由大到小
}
sort(nums.begin(), nums.end(), cmp);
sort(nums.rbegin(),nums.rend());//這個我最常用
```
----
如果是其他種呢?
```cpp=
const int maxn=1e5;
struct node{
int index,value;
}arr[1e5];
//如果我們只要sort index 為 0~n-1 的這部分
sort(arr,arr+n,[](const node a,const node b){
return a.val<b.value;// value為先的排序
});
```
----
sort是一個好用的函式,之後不用再自己寫排序,也不用擔心sort的時間會不會超過題目要求。
很多題目都需要sort的幫助,例如:二分搜、取中位數...
----
下一次上課
時間複雜度的估算
$O(f(n))$
你們要準備出新手村了
接下來是一片演算法的海洋(不要溺水囉)
---
[題目連結](https://vjudge.net/contest/764159)
{"contributors":"[{\"id\":\"2f04e9e4-ce0e-4fa7-9f7e-a3c9ae53239b\",\"add\":978,\"del\":58,\"latestUpdatedAt\":1762418949264}]","description":"stack","title":"530競技程式培力基地(六)"}