Skip to content

Commit

Permalink
Update 快速排序.md
Browse files Browse the repository at this point in the history
重构快速选择的介绍
  • Loading branch information
CurryWOE authored Oct 30, 2023
1 parent 3a639bf commit 3399e9e
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion docs/Base/快速排序.md
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,12 @@ $$\frac{T(n)}{n+1}=O(\log n)$$
$$T(n)=O(n\log n)$$
>有一个快速选择算法,应用了快速排序的思想,可以 $O(n)$ 地找到第 $k$ 大元素,不过在算法竞赛中几乎没遇到过,不作了解
## 快速选择
```cpp
void nth_element<_RAIter>(_RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomAccessIterator __last)
void nth_element(RandomAccessIterator first, RandomAccessIterator nth, RandomAccessIterator last, Compare comp);
```
该函数可以从某个序列中 $O(n)$ 找到第 k 小的元素 Val,并将 Val 移动到序列中第 k 的位置处。不仅如此,整个序列经过 nth_element() 函数处理后,所有位于 k 之前的元素都比 Val 小,所有位于 k 之后的元素都比 Val 大,在默认的升序排序规则(std::less)的条件下

## 快速排序在算法竞赛中常见的应用
观察出目标具有某种性质,使用std::sort排序,然后贪心
Expand Down

0 comments on commit 3399e9e

Please sign in to comment.