Loading docs/basic/quick-sort.md +1 −1 Original line number Diff line number Diff line Loading @@ -28,7 +28,7 @@ 找第 $k$ 大的数(K-th order statistic),最简单的方法是先排序,然后直接找到第 $k$ 大的位置的元素。这样做的时间复杂度是 $O(n\log n)$ ,对于这个问题来说很不划算。事实上存在时间复杂度 $O(n)$ 的解法。 考虑快速排序的划分过程,在快速排序的「划分」结束后,数列 $A_{p} \cdots A_{r}$ 被分成了 $A_{p} \cdots A_{q}$ 和 $A_{q+1} \cdots A_{r}$ ,此时可以按照左边元素的个数( $q - p + 1$ )和 k 的大小关系来判断是只在左边还是只在右边递归地求解。 考虑快速排序的划分过程,在快速排序的「划分」结束后,数列 $A_{p} \cdots A_{r}$ 被分成了 $A_{p} \cdots A_{q}$ 和 $A_{q+1} \cdots A_{r}$ ,此时可以按照左边元素的个数( $q - p + 1$ )和 $k$ 的大小关系来判断是只在左边还是只在右边递归地求解。 可以证明,在期望意义下,程序的时间复杂度为 $O(n)$ 。 Loading Loading
docs/basic/quick-sort.md +1 −1 Original line number Diff line number Diff line Loading @@ -28,7 +28,7 @@ 找第 $k$ 大的数(K-th order statistic),最简单的方法是先排序,然后直接找到第 $k$ 大的位置的元素。这样做的时间复杂度是 $O(n\log n)$ ,对于这个问题来说很不划算。事实上存在时间复杂度 $O(n)$ 的解法。 考虑快速排序的划分过程,在快速排序的「划分」结束后,数列 $A_{p} \cdots A_{r}$ 被分成了 $A_{p} \cdots A_{q}$ 和 $A_{q+1} \cdots A_{r}$ ,此时可以按照左边元素的个数( $q - p + 1$ )和 k 的大小关系来判断是只在左边还是只在右边递归地求解。 考虑快速排序的划分过程,在快速排序的「划分」结束后,数列 $A_{p} \cdots A_{r}$ 被分成了 $A_{p} \cdots A_{q}$ 和 $A_{q+1} \cdots A_{r}$ ,此时可以按照左边元素的个数( $q - p + 1$ )和 $k$ 的大小关系来判断是只在左边还是只在右边递归地求解。 可以证明,在期望意义下,程序的时间复杂度为 $O(n)$ 。 Loading