快速选择算法的时间复杂度分析

如题。
LeetCode215.数组中的第k个最大元素。
如果选择快排的一个思想,即分区的思想,他的时间复杂度为何是O(n)呢,应该如何分析呢?

#leetcode#
全部评论
快速选择其实相当于用二分法找这个第k大的元素,第一次partition需要遍历n个元素,假设第一次遍历后返回j,说明前j小的数都在前半段,如果k要比j小,那么就应该继续在前半段找这个第k小数,否则在后半段(和二分法找某个数一样的思想),这样下次遍历就是遍历j个或者n-j个。理想来说,partition应该刚刚把数组平分,因此总遍历数是n+n/2+n/4+...+1=o(n)
2 回复 分享
发布于 2019-08-31 19:09

相关推荐

评论
1
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务