OSDN Git Service

对第k大做了补充说明,因为可能有歧义
authorBanson <xzcxzcyy@126.com>
Tue, 17 Nov 2020 08:50:40 +0000 (16:50 +0800)
committerGitHub <noreply@github.com>
Tue, 17 Nov 2020 08:50:40 +0000 (16:50 +0800)
docs/basic/quick-sort.md

index b397138..f917934 100644 (file)
@@ -130,6 +130,8 @@ void quick_sort(T arr[], const int len) {
 
 ## 线性找第 k 大的数
 
+第 $k$ 大的数被定义为序列排成升序时,第 $k$ 个位置上的数(编号从0开始)。
+
 找第 $k$ 大的数(K-th order statistic),最简单的方法是先排序,然后直接找到第 $k$ 大的位置的元素。这样做的时间复杂度是 $O(n\log n)$ ,对于这个问题来说很不划算。
 
 我们可以借助快速排序的思想解决这个问题。考虑快速排序的划分过程,在快速排序的「划分」结束后,数列 $A_{p} \cdots A_{r}$ 被分成了 $A_{p} \cdots A_{q}$ 和 $A_{q+1} \cdots A_{r}$ ,此时可以按照左边元素的个数( $q - p + 1$ )和 $k$ 的大小关系来判断是只在左边还是只在右边递归地求解。