diff --git a/solutions/215. Kth Largest Element in an Array.md b/solutions/215. Kth Largest Element in an Array.md index 269cc3f..a117b8a 100644 --- a/solutions/215. Kth Largest Element in an Array.md +++ b/solutions/215. Kth Largest Element in an Array.md @@ -21,7 +21,8 @@ nth_element(vc.begin(), vc.begin()+5, vc.end(), cmp); // 没有返回值 时间复杂度平均O(n)(最坏O(n^2)),空间复杂度O(1) -> 可以先将nums顺序随机打乱,这样就不会出现最坏时间复杂度的情况。 +> * 平均时间复杂度粗略证明:假设每次都是对半划分,那么第一次划分我们需要遍历约n个数,第二次需要遍历约n/2个数,... 所以总的遍历次数大概就是 n + n/2 + n/4 + n/8 + ...,用一个等比序列求和可得上式的极限(n很大时)为2n。所以这个**平均时间复杂度是与k具体多少无关的,例如当k=n/2时还是这个复杂度,即求中位数的平均复杂度也是O(n)。** +> * 可以先将nums顺序随机打乱,这样就不会出现最坏时间复杂度的情况。 ## 思路二、堆