Unverified Commit 25539be9 authored by ir1d's avatar ir1d Committed by GitHub
Browse files

feat: add translation

parent c619686a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -185,7 +185,7 @@ std::sort(a, a + n);

### 线性找第 k 大的数

找第 k 大的数,最简单的方法是先排序,然后直接找到第 k 大的位置的元素。这样做的时间复杂度是 $O(N\log N)$ ,对于这个问题来说很不划算。事实上,我们有 $O(n)$ 的解法。
找第 k 大的数(K-th order statistic),最简单的方法是先排序,然后直接找到第 k 大的位置的元素。这样做的时间复杂度是 $O(N\log N)$ ,对于这个问题来说很不划算。事实上,我们有 $O(n)$ 的解法。

考虑快速排序的划分过程,在快速排序的“划分”结束后,数列 $A[p \cdots r]]$ 被分成了 $A[p \cdots q]$ 和 $A[q+1 \cdots r]$ ,此时可以按照左边元素的个数( $q - p + 1$ )和 k 的大小关系来判断是只在左边还是只在右边递归地求解。