问题 单项选择题

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

A.O(lgn)

B.O(nlgn)

C.O(n)

D.O(n)

答案

参考答案:B

解析:

本题考查的是算法的时间复杂度的基本计算。T(n)=2T(n/2)+n其实是在给n个元素进行快速排序时的最好情况下的时间递推关系式。其中,T(n/2)是一个子表需要的处理时间;n为当次分割需要的时间。对此表达式变形得用n/2代替上式中的依次替换到最后是算法共需要[log2n]+1次分割,将替换得到的[logn]+1个式子相加,最终得到将T(1)=1代入得T(n)=n[log2n]+2n。因为O(n)n),而且对数的底可省略或为任意常数,所以T(n)=O(nlogn)=O(nlog10n)=O(nlgn)。

单项选择题
单项选择题