Lib.nbdp.net
首页
试卷列表
OJ题库
搜索
登录
主页
题库
详解
不是VIP会员,不能显示答案
题目解答
题目:
应用快速排序的分治思想,可以实现一个求第K大数的程序。假定不考虑极端的最坏情况,理论上可以实现的最低的算法时间复杂度为( )。
A.O(n2)
B.O(n log n)
C.O(n)
D.O(1)
考点:
0
分析:
解答:
解析:快排的时间复杂度是O(nlogn),利用快速排序的思想,从数组S中随机找出一个元素X,把数组分为两部分Sa和Sb。Sa中的元素大于等于X,Sb中元素小于X。这时有两种情况:
1. Sa中元素的个数小于k,则Sb中的第k-|Sa|个元素即为第k大数;
2. Sa中元素的个数大于等于k,则返回Sa中的第k大数。时间复杂度近似为O(n)。
评论:
老师:
0