问题 单项选择题

设某算法的计算时间可用递推关系式T(n)=2T(n/2)+n表示,则该算法的时间复杂度。为()。

A.O(lgn)

B.O(nlgn)

C.O(n)

D.O(n2)

答案

参考答案:B

解析:

本题考查的是算法的时间复杂度的基本计算。

T(n)=2T(n/2)+n其实是在给n个元素进行快速排序时的最好情况下的时间递推关系式,其中T(n/2)是一个子表需要的处理时间,n为当次分割需要的时间。对此表达式变形得:

用n/2代替上式中的n有:

依次替换到最后是:

算法共需要[1og2n]+1次分割,将替换得到的[1og2n]+1个式子相加,最终得到:

将T(1)=1代入得:T(n)=n[log2n]+2n

因为O(n)<O(nlog2n),而且对数的底可省略或为任意常数,所以:T(n)=O(nlogn)=O(nlg10n)=O(nlgn)。

多选题
单项选择题